httpclient调用asmx
时间: 2023-09-28 19:10:15 浏览: 153
下面是一个简单的示例,展示了如何使用 Apache HttpClient 来调用 ASMX web service。
首先,我们需要创建一个 HttpClient 对象,并为其设置连接超时和读取超时:
```
HttpClient httpClient = new DefaultHttpClient();
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000); //连接超时为5秒
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000); //读取超时为5秒
```
然后,我们需要创建一个 HttpPost 对象,并将其设置为调用 ASMX web service 的 URL:
```
HttpPost httpPost = new HttpPost("http://localhost/TestService.asmx");
```
接下来,我们需要将 SOAP 请求正文作为字符串设置为 HttpPost 对象的实体,并设置 Content-Type 头:
```
StringEntity stringEntity = new StringEntity("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"><soapenv:Header/><soapenv:Body><tem:GetData><tem:value>123</tem:value></tem:GetData></soapenv:Body></soapenv:Envelope>", "UTF-8");
stringEntity.setContentType("text/xml");
httpPost.setEntity(stringEntity);
```
注意,SOAP 请求正文必须是符合 SOAP 1.1 或 SOAP 1.2 标准的 XML 字符串。
最后,我们使用 HttpClient 对象执行 HttpPost 请求,并获取响应实体的内容:
```
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
String response = EntityUtils.toString(httpEntity, "UTF-8");
```
响应内容是一个符合 SOAP 标准的 XML 字符串,我们可以使用 XML 解析器来解析它。
阅读全文