我正在尝试创建一个 Java swing 应用程序,并且正在尝试使用我为 Android 编写的类。我在执行 http 帖子时遇到了问题,因为我遇到了 NULL 指针异常。
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: }