java 中HttpClient传输xml字符串实例详解

时间:2022-08-24 18:34:20

javaHttpClient传输xml字符串实例详解

介绍:我现在有一个对象page,需要将page对象转换为xml格式并以binary方式传输到服务端

其中涉及到的技术点有:

1、对象转xml流
2、输出流转输入流
3、httpClient发送二进制流数据

POM文件依赖配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.2</version>
  </dependency>
   
  <dependency>
   <groupId>org.apache.httpcomponents</groupId>
   <artifactId>httpmime</artifactId>
   <version>4.5.2</version>
  </dependency>
  <dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.4</version>
  </dependency>
  <dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.2.4</version>
    <type>jar</type>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.xwiki.platform</groupId>
    <artifactId>xwiki-platform-rest-model</artifactId>
    <version>7.2</version>
  </dependency>
</dependencies>

java代码示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public void testNewPage() throws Exception{
    //定义对象
    Page page =new Page();
    page.setTitle("testPage");
    page.setSyntax("xwiki/2.0");
    page.setContent("This is a testPage");
    page.setId("xwiki:Main.testPage");
    //初始化并转换对象为xml文件的流
    JAXBContext context = JAXBContext.newInstance("org.xwiki.rest.model.jaxb");
    Marshaller marshaller=context.createMarshaller();
    Unmarshaller unmarshaller = context.createUnmarshaller();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    marshaller.marshal( page, out );
    //将流转换并放入到InputStreamEntity中
    InputStreamEntity inputStreamEntity=new InputStreamEntity(new ByteArrayInputStream(out.toByteArray()));
 
    //发送请求
    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpUriRequest httpPost = RequestBuilder.put()
        .setUri(new URI("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();
    //获取返回结果
    CloseableHttpResponse response = httpclient.execute(httpPost);
    System.out.println(response.getStatusLine().getStatusCode());
    HttpEntity responseEntity=response.getEntity();
    System.out.println(responseEntity);
    if(response.getStatusLine().getStatusCode()<400){
      Page responsePage = (Page) unmarshaller.unmarshal(responseEntity.getContent());
      System.out.println(responsePage);
//      System.out.println(new Gson().toJson(responsePage));
    }
  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/gsying1474/article/details/51505714