如何生成Http Post请求并在使用Java发送请求之前打印请求

时间:2016-11-17 10:59:29

标签: java xml apache http

我需要使用java生成HTTP POST请求,请求格式在

之下
  <request version="3.9" principal="c1Prov" credentials="c1Prov">
     <target name="UserAPI" operation="createUser">
      <parameter>
       <user>
       <name><SUBSCRIBER_ID></name>
       <login-name><SUBSCRIBER_LOGIN_ID></login-name>
          <password>
        <value><SUBSCRIBER_PASSWORD></value>
        </password>
          <organization>
       <qualified-name>/BTCL_FIXED/<WHOLESALE_ORG_NAME></qualified-name>
       </organization>
       <account><name><SUBSCRIBER_ACCOUNT></name></account>
       <profile-set>
       <qualified-name>/BTCL_FIXED/<FIXED_PROFILE_SET_NAME></qualified-name>
        </profile-set>
            </user>
        </parameter>
         </target>
         </request>

我尝试了下面的代码,但它没有打印任何东西。 我这样做的方法是否正确? 2.为什么不打印任何东西?

HttpClient httpClient = new HttpClient();
     HttpPost post = new HttpPost("http://www.baidu.com");
     String xml = "<target name=\"DomainAPI\" operation=\"createDomain\"><parameter><domain><name><DOMAIN_NAME></name><owning-organization><qualified-name>/BTCL_FIXED</qualified-name></owning-organization><profile-set><qualified-name>/BTCL_FIXED/Wholesale Fixed Dom PS</qualified-name><type>domain</type></profile-set></domain></parameter></target>";
     HttpEntity entity = new ByteArrayEntity(xml.getBytes("UTF-8"));
     post.setEntity(entity);
     System.out.println(post.Entity());

1 个答案:

答案 0 :(得分:1)

entity = post.getEntity().getContent() - 您将获得一个实体的InputStream。 从中获取一个字符串:

String str = EntityUtils.toString(entity);

使用StringEntity而不是ByteArrayEntity:

new StringEntity(xml, Charset.defaultCharset())