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)); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!