Okhttp3调用asmx
时间: 2024-04-25 19:05:53 浏览: 212
Android调用WebService
WebService的方式
Okhttp3是一个强大的HTTP客户端,它可以用来调用WebService,只需要按照下面的步骤进行操作:
1. 引入Okhttp3库
在项目的build.gradle文件中添加以下依赖:
```groovy
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
}
```
2. 创建OkHttpClient对象
```java
OkHttpClient client = new OkHttpClient();
```
3. 创建SOAP请求消息
```java
String requestBody = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://www.webserviceX.NET/\">" +
"<soapenv:Header/>" +
"<soapenv:Body>" +
"<web:GetCitiesByCountry>" +
"<web:CountryName>India</web:CountryName>" +
"</web:GetCitiesByCountry>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";
RequestBody body = RequestBody.create(requestBody, MediaType.parse("text/xml; charset=utf-8"));
```
4. 创建Request对象
```java
Request request = new Request.Builder()
.url("http://www.webservicex.net/globalweather.asmx")
.addHeader("SOAPAction", "http://www.webserviceX.NET/GetCitiesByCountry")
.post(body)
.build();
```
5. 发送请求并获取响应
```java
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
String responseData = response.body().string();
System.out.println(responseData);
}
```
以上代码中,我们使用OkHttpClient的newCall方法来发送请求,并使用execute方法获取响应。在响应中,我们可以通过调用response.body().string()方法来获取响应数据。
注意:以上代码只是示例,如果要调用其他的WebService,需要根据实际情况修改SOAP请求消息中的内容。
阅读全文