Kev*_* D. 21 java post apache-httpclient-4.x
我正在创建一个单元测试来试用我刚刚创建的servlet.
@Test
public void test() throws ParseException, IOException {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://localhost:8080/WebService/MakeBaby");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("father_name", "Foo"));
nameValuePairs.add(new BasicNameValuePair("mother_name", "Bar"));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = null;
try {
response = client.execute(post);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String stringifiedResponse = EntityUtils.toString(response.getEntity());
System.out.println(stringifiedResponse);
assertNotNull(stringifiedResponse);
}
Run Code Online (Sandbox Code Playgroud)
以下行生成NullPointerException:
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?
Kev*_* D. 33
抱歉这个愚蠢的问题,只需添加utf-8格式即可解决.
post.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8"));
Run Code Online (Sandbox Code Playgroud)
创建一个UrlEncodedFormEntity不传递格式将使用DEFAULT_CONTENT_CHARSET哪个ISO-8859-1
哪个让我感到困惑......是什么导致它抛出NullPointerException?
Max*_*gee 11
根本不是一个愚蠢的问题.我认为混淆是在httpclient 4.1中,不需要编码格式 - 这有效:
HttpEntity entity = new UrlEncodedFormEntity(params);
method.setEntity(entity);
Run Code Online (Sandbox Code Playgroud)
当我将依赖项更改为httpclient 4.2以访问URIBuilder时,我得到了:
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)...
Run Code Online (Sandbox Code Playgroud)
使用4.2时,似乎构造函数需要编码,如您所述.令人困惑的是,doc指定旧构造函数仍然可用,但它似乎不再起作用.
public UrlEncodedFormEntity(List parameters)doc
| 归档时间: |
|
| 查看次数: |
29780 次 |
| 最近记录: |