1、pom引入jar
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
2、配置xml实体类
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Data;
@Data
@JacksonXmlRootElement(localName = "DocumentElement")
public class DocumentElementBean {
@JacksonXmlProperty(localName = "Name")
private String name;
@JacksonXmlProperty(localName = "Phone")
private String phone;
@JacksonXmlProperty(localName = "DataTable")
private DataTableBean dt;
}
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Data;
@Data
@JacksonXmlRootElement(localName = "DataTable")
public class DataTableBean {
@JacksonXmlProperty(localName = "Text")
private String text;
}
3、httpclient 发送post请求
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class HttpUtil {
/**
* 发送xml请求到server端
* @param url xml请求数据地址
* @param xmlString 发送的xml数据流
* @return null发送失败,否则返回响应内容
*/
public static String sendPost(String url,String xmlString){
//创建httpclient工具对象
HttpClient client = new HttpClient();
//创建post请求方法
PostMethod myPost = new PostMethod(url);
//设置请求超时时间
client.setConnectionTimeout(3000*1000);
String responseString = null;
try{
//设置请求头部类型
myPost.setRequestHeader("Content-Type","text/xml");
myPost.setRequestHeader("charset","utf-8");
//设置请求体,即xml文本内容,一种是直接获取xml内容字符串,一种是读取xml文件以流的形式
myPost.setRequestBody(xmlString);
int statusCode = client.executeMethod(myPost);
//只有请求成功200了,才做处理
if(statusCode == HttpStatus.SC_OK){
InputStream inputStream = myPost.getResponseBodyAsStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
StringBuffer stringBuffer = new StringBuffer();
String str = "";
while ((str = br.readLine()) != null) {
stringBuffer.append(str);
}
responseString = stringBuffer.toString();
}
}catch (Exception e) {
e.printStackTrace();
}finally{
myPost.releaseConnection();
}
return responseString;
}
}
4、main方法测试
public static void main(String[] args) {
ObjectMapper mapper = new XmlMapper();
DocumentElementBean bean = new DocumentElementBean();
bean.setName("ceshi");
bean.setPhone("13511112222");
DataTableBean dataTable = new DataTableBean();
dataTable.setText("子测试");
bean.setDt(dataTable);
String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + mapper.writeValueAsString(bean);
System.out.println("请求参数=" + xmlString);
String responseString = HttpUtil.sendPost(url, xmlString);
System.out.println("返回参数=" + responseString);
}