【发布时间】:2013-11-30 02:45:57
【问题描述】:
我正在尝试制作一个执行图像搜索并在网格中显示图像结果的应用程序。由于 Google Image Search API 已弃用且很快将不再可用,因此我正在尝试使用 Bing Search API。
但是,我收到以下错误:
java.io.IOException: No authentication challenges found
at libcore.net.http.HttpURLConnectionImpl.getAuthorizationCredentials(HttpURLConnectionImpl.java:427)
at libcore.net.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:407)
at libcore.net.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:356)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292)
at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)
我按照http://learn-it-stuff.blogspot.com/2012/09/using-bing-custom-search-inside-your.html 中的示例进行操作。如果有人遇到过这个问题,或者可以帮助我,那将不胜感激。谢谢!
到目前为止,这是我的代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AsyncTask <Void, Void, Void> task = new AsyncTask <Void, Void, Void> () {
protected Void doInBackground(Void... args) {
// Uri uri = Uri.parse("https://www.google.com/search?tbm=isch&q=penguin");
// Intent intent = new Intent(Intent.ACTION_VIEW, uri);
// startActivity(intent);
/*-------------------------Bing search-------------------------*/
String searchText = "Hello World";
searchText = searchText.replace(" ", "%20");
String accountKey = "MY_APP_ID";
accountKey = accountKey.replace("+", "%2B");
byte[] accountKeyBytes = Base64.encodeBase64((accountKey + ":" + accountKey).getBytes());
String accountKeyEnc = new String(accountKeyBytes);
URL url;
try {
url = new URL(
"https://api.datamarket.azure.com/Bing/Search/v1/"
+ "Image?Query=%27" + searchText + "%27");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Authorization", "Basic " + accountKeyEnc);
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
StringBuilder sb = new StringBuilder();
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
sb.append(output);
}
conn.disconnect();
System.out.println(sb);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
};
task.execute();
}
}
【问题讨论】:
-
我不知道你是否还在做这个。但是,您应该首先检查 Android 的基础知识。您的代码中有许多仅来自经验的错误。如果你修复它们,我可能会帮你解决你的问题。
-
你能把这个代码发给我吗
-
@kumar,你是什么意思?代码就在这里。我一直忙于其他项目,还没有回来。 Luis,我对 Android 并不陌生;此代码来自示例项目。但是,当我回到这个问题时,我们将不胜感激。
-
@lgdroid57 我的意思是你这么说,我正在遵循learn-it-stuff.blogspot.com/2012/09/… 中的示例。你用java教程完成了这个任务,现在我有同样的要求,但我无法做到这一点,如果你回来它对我更有帮助,谢谢你的回应
-
你解决了吗?如果你这样做了,将不胜感激......
标签: android image search azure bing