2

Imgur API v3 に匿名でアップロードするアプリを構築しようとしていますが、NullPointerException. マニフェストにインターネット許可が追加されているので、なぜこれが機能しないのかわかりません。はclient-id明らかな理由で削除されます。どんな提案でも大歓迎です。

public HttpResponse uploadImage(String image_contents) {
    /* defining imgur api location */
    String API = ("https://api.imgur.com/3/image.json");
    Uri imgurAPI = (Uri.parse(API));

    // url encoding for bitmap

    // String dev_key = ("anon-dev-key-removed");
    String client_id = ("client-id-removed");
    /* String client_secret = ("secret-id-removed"); */
    /* constructing query */
    // spawning apache httpclient and post instance
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(API);
    // defining namevaluepairs for post data and setting entity
    // httpclient help from this url:
    // http://www.vogella.com/articles/ApacheHttpClient/article.html
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("image", image_contents));
    /* for debugging purposes */
    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
    /* end for debugging purposes */
    try {
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    // adding oauth2 header with clientid
    httppost.addHeader("Authorization", "Client-ID " + client_id);
    // execute the post and collect the response as a httpresponse object

    HttpResponse response = null;
    changeText(httppost.toString());
    try {
        response = httpclient.execute(httppost);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    /* shut down http client */
    httpclient.getConnectionManager().shutdown();

    return response;
}

uploadImage()クラッシュしませんが、処理しようとすると次のHttpResponseようになりますNullPointerException:

public void provideURL(HttpResponse response) {
    int responseCode=response.getStatusLine().getStatusCode();
    changeText("test");
}
4

1 に答える 1

1

最近変更された可能性があります...しかし、imgur 3.0 APIでApache HTTPクライアントを使用するためです(少なくとも私がコーディングしたとき)。HTTP クライアント用に特別な SSL 処理コードを追加する必要があります。そうしないと、リクエストは次のように失敗するはずです。

 // io exception with the message: (hostname in certificate didn't match: <api.imgur.com>    != <imgur.com> OR <imgur.com>)

ここで正確に何をする必要があるかを確認できます(他の人に問題を説明した場所): https ://groups.google.com/forum/#!topic/imgur/RQytzya5aa4

(catch ブロックで) リクエストを行うときに例外が発生していますか? そうでない場合は、SSL 構成が問題ではない可能性があります。

于 2013-06-23T06:51:57.487 に答える