Art*_*emm 0 java web-services httpclient
需要传递没有值的get参数而没有"="符号来使用外部API.网址是
http://example.com/Service/v1/service.ashx?methodName&name=val&blablabla
正如您所看到的,第一个参数是要在服务器上调用的方法(methodName)的名称,它没有任何值,也没有"=".我想以"正确"的方式形成参数,但目前形成如下:
List<NameValuePair> params = new LinkedList<NameValuePair>();
params.add(new BasicNameValuePair("name", "val"));
params.add(new BasicNameValuePair("name1", "val1"));
String paramString = URLEncodedUtils.format(params, "utf-8");
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(getEndpointUrl() + "?methodName&" + paramString);
Run Code Online (Sandbox Code Playgroud)
问题出在使用串联的最后一行(而不是常规的params转换).将"methodName"作为名称添加到params并将null作为值添加到结果URL中的"methodName =".服务器不理解这种表示法.
我认为你最好手动形成URL.我们广泛使用HttpGet方法,当我们构造URL字符串时,我们手动确保参数'正确性'.然后我们使用HttpClient项目中的URIUtil来编码查询字符串:
// Start with your base method name, if necessary/known
String paramString = "methodName";
for (NameValuePair p : params ) {
String n = p.getName();
String v = p.getValue();
if ( v == null ) {
paramString += "&" + n;
} else {
paramString += "&" + n + "=" + v;
}
}
String url = "http://example.com/Service/v1/service.ashx?" + URIUtil.encodeQuery(paramString);
HttpGet get = new HttpGet(url);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1159 次 |
| 最近记录: |