Java スイング アプリケーションを作成しようとしていて、Android 用に作成したクラスを使用しようとしています。NULL ポインター例外が発生しているため、http 投稿の実行に問題があります。
private static String httpPost(ArrayList<NameValuePair> constraints, URI uri)
throws ClientProtocolException, IOException {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(uri);
try {
httppost.setEntity(new UrlEncodedFormEntity(constraints));
} catch (UnsupportedEncodingException e) {
throw (new IllegalArgumentException("Constraints: "
+ constraints.toString()));
}
HttpResponse response = httpclient.execute(httppost);
return isToString(response.getEntity().getContent());
}
スタックトレース:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.apache.http.entity.StringEntity.<init>(StringEntity.java:70)
at org.apache.http.client.entity.UrlEncodedFormEntity.<init>(UrlEncodedFormEntity.java:78)
at org.apache.http.client.entity.UrlEncodedFormEntity.<init>(UrlEncodedFormEntity.java:92)
at connection.Server.httpPost(Server.java:130)
...
Android では、org.apache.* パッケージが android-8.jar に含まれています。ここからダウンロードしたライブラリ(HttpCore 4.2.1)では機能しません。
NullPointerException は、次の呼び出しでスローされますnew UrlEncodedFormEntity(constraints)
。デバッガーを使用してパラメーターを確認しましたが、constraints
完全に問題なく、含まれているはずのものが含まれています。
私は何か間違ったことをしていますか?libに問題があるように思えます。サイトで以前のバージョンを探していましたが、そこにはないようです。
編集:ソースをダウンロードして、例外がスローされている場所を正確に確認することが思いつきました(70行目):
org.apache.http.entity.StringEntity
68: Charset charset = contentType != null ? contentType.getCharset() : null;
69: if (charset == null) {
70: charset = HTTP.DEF_CONTENT_CHARSET;
80: }