java 中HttpClient传输xml字符串实例详解
java中HttpClient传输xml字符串实例详解
介绍:我现在有一个对象page,需要将page对象转换为xml格式并以binary方式传输到服务端
其中涉及到的技术点有:
1、对象转xml流
2、输出流转输入流
3、httpClient发送二进制流数据
POM文件依赖配置
junit junit 3.8.1 test org.apache.httpcomponents httpclient 4.5.2 org.apache.httpcomponents httpmime 4.5.2 commons-lang commons-lang 2.4 com.google.code.gson gson 2.2.4 jar compile org.xwiki.platform xwiki-platform-rest-model 7.2
java代码示例
publicvoidtestNewPage()throwsException{
//定义对象
Pagepage=newPage();
page.setTitle("testPage");
page.setSyntax("xwiki/2.0");
page.setContent("ThisisatestPage");
page.setId("xwiki:Main.testPage");
//初始化并转换对象为xml文件的流
JAXBContextcontext=JAXBContext.newInstance("org.xwiki.rest.model.jaxb");
Marshallermarshaller=context.createMarshaller();
Unmarshallerunmarshaller=context.createUnmarshaller();
ByteArrayOutputStreamout=newByteArrayOutputStream();
marshaller.marshal(page,out);
//将流转换并放入到InputStreamEntity中
InputStreamEntityinputStreamEntity=newInputStreamEntity(newByteArrayInputStream(out.toByteArray()));
//发送请求
CloseableHttpClienthttpclient=HttpClients.createDefault();
HttpUriRequesthttpPost=RequestBuilder.put()
.setUri(newURI("http://172.16.200.220:8082/xwiki/rest/wikis/xwiki/spaces/Main/pages/testPage"))
.setEntity(inputStreamEntity)
.setHeader("Content-Type","application/xml")
.setHeader("Cookie",cookieStr).build();
//获取返回结果
CloseableHttpResponseresponse=httpclient.execute(httpPost);
System.out.println(response.getStatusLine().getStatusCode());
HttpEntityresponseEntity=response.getEntity();
System.out.println(responseEntity);
if(response.getStatusLine().getStatusCode()<400){
PageresponsePage=(Page)unmarshaller.unmarshal(responseEntity.getContent());
System.out.println(responsePage);
//System.out.println(newGson().toJson(responsePage));
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!