0
final HttpClient hClient = new DefaultHttpClient();
final HttpPost hPost = new HttpPost(
        "http://xxx.xxx");
try {
    hPost.setHeader("Accept", "application/json");
    hPost.setHeader("Content-type",
            "application/json");
    hPost.setEntity(new StringEntity(JSON));
    // execute request
    final HttpResponse response = hClient
            .execute(hPost);
    final HttpEntity entity = response.getEntity();

Android は 05-16 20:02:52.784 を返します: W/DefaultRequestDirector(15642): 認証エラー: これらの課題のいずれにも応答できません: {} を修正する方法がわかりません。問題はどこにあり、どうすれば修正できますか?

4

3 に答える 3

0

このエラーが発生し、基本に戻って解決しました! エラーは、 https://www.googleapis.com/oauth2/v1/userinfoへのリクエストから生成されました。解決策は以下に掲載されています。

            URLConnection conn = (HttpURLConnection) url.openConnection();
            conn.addRequestProperty("key", API_KEY);
    conn.addRequestProperty("client_id", CLIENT_ID);
    conn.addRequestProperty("client_secret", "");
    conn.setRequestProperty("Authorization", "OAuth " + token);

すべての追加リクエストは HTTPGET キー/値であり、setProperty はヘッダー パラメータを追加します。Google API コンソールは現在のバージョンではクライアント シークレットを提供しないため、balnk 文字列を追加しました。

于 2013-02-24T17:07:46.630 に答える
0

この警告もありましたが、特に問題は発生しませんでした。リクエストは引き続き正常に行われます。

AndroidHttpClientただし、代わりにを使用し始めるとすぐに、このエラーが発生しなくなりましたDefaultHttpClient。不便なことの 1 つは、UI スレッドから使​​用できずAndroidHttpClient、別のスレッドで実行する必要があることです。

于 2012-05-16T18:20:02.713 に答える
0

次のように Http パラメータを設定してみてください。

HttpParams myParams = new BasicHttpParams();

HttpConnectionParams.setSoTimeout(myParams, 10000);
HttpConnectionParams.setConnectionTimeout(myParams, 10000); // Timeout

DefaultHttpClient httpClient = new DefaultHttpClient(myParams);

http 投稿と応答については、次のコードを試すことができます。必要に応じてカスタマイズしてください (たとえば、文字列パラメーターを設定します)。

HttpResponse response;
httpClient.getParams().setParameter("Your String", "YourStringValue");
localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(YOurURL);

Log.e("URL", URL); //just to check 

httpClient.getParams().setParameter(ClientPNames.COOKIE_POLICY,CookiePolicy.RFC_2109);

StringEntity tmp = null;

httpPost.setHeader("Accept", "application/json");

tmp = new StringEntity(inputJObject.toString(), "UTF-8");

httpPost.setEntity(tmp);

response = httpClient.execute(httpPost, localContext);


Log.i(TAG, response.getStatusLine().toString()); // Examine the response status


HttpEntity entity = response.getEntity();  // Get hold of the response entity
于 2012-05-16T18:30:15.143 に答える