0

我正在尝试创建一个 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:  }
4

2 回答 2

1

你什么时候下载的库?你看过这个帖子吗?建议是这是一个回归,已在以后的构建中解决。

鉴于您的编辑,我会说您拥有的二进制文件和您下载的源不同步。我建议重新下载二进制文件并尝试使用这些文件运行您的应用程序。

于 2012-06-26T21:09:01.537 回答
1

It seems that StringEntity is broken in the org.apache.http.entity.StringEntity class of HttpClient 4.2.1. The problem appears to involve a Charset. Patch is available at http://dvdsdirect.us/notesstringentity.jsp

于 2012-07-06T14:58:48.037 回答