1.xml字符串解析成json
pom:
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.2.5</version>
</dependency>
java:
import net.sf.json.JSON;
import net.sf.json.JSONSerializer;
import net.sf.json.xml.XMLSerializer;
String returnStr = post.getResponseBodyAsString();
XMLSerializer xmlSerializer = new XMLSerializer();
JSON json = xmlSerializer.read(returnStr);
JSONObject jsonObject =JSONObject.parseObject( json.toString());
2.clientpost提交
(1)requestbody字符串xmlStr
java:
import net.sf.json.JSON;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.net.URLEncoder;
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(requestUrl);
post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
RequestEntity entity = new StringRequestEntity(xmlStr,"application/xml","UTF-8");
post.setRequestEntity(entity);
client.executeMethod(post);
String returnStr = post.getResponseBodyAsString();
(2)参数是key-value
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(surl);
post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
post.setParameter("method", method); // 接口API方法名,根据接口做相应
post.setParameter("client_customerid", client_customerid); // 固定值
post.setParameter("client_db", client_db);// 固定值
post.setParameter("messageid", messageid);// 消息代码,根据接口做相应调整
post.setParameter("apptoken", apptoken);
post.setParameter("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
post.setParameter("appkey", appkey);
post.setParameter("sign", URLEncoder.encode(generateMd5(appSecret+JSONObject.toJSONString(xmldata)+appSecret),"UTF-8"));// URL编码
post.setParameter("data", xmlStr);
client.getHttpConnectionManager().getParams().setConnectionTimeout(200 * 100);
// 设置读取数据的超时时间
client.getHttpConnectionManager().getParams().setSoTimeout(6000 * 10);
client.executeMethod(post);
String returnStr = post.getResponseBodyAsString();
3.RestTemplate提交
(1)HttpEntity是字符串
String str = body;
RestTemplate client = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
client.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));
// 以表单的方式提交
headers.setContentType(MediaType.APPLICATION_JSON);
//将请求头部和参数合成一个请求
LinkedMultiValueMap link = new LinkedMultiValueMap();
link .add("sign","xxxxx");
link .add("timestamp","xxxxx");
link .add("appkey","xxxxx");
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url ).queryParams(link );
//执行HTTP请求,将返回的结构使用ResultVO类格式化
try
{
body= URLEncoder.encode(body, "UTF-8");
}
catch (UnsupportedEncodingException e)
{
throw new RuntimeException(e);
}
String response =client.postForObject( builder.toUriString(), new HttpEntity<>(body,headers) , String.class );
(2)HttpEntity是对象
HttpHeaders headers = new HttpHeaders();
headers.add(Authorization_Key,token);
HttpEntity<User> entity = new HttpEntity<>(obj, headers);
ResponseEntity<ResponseModel> m= template.postForEntity(url,entity,ResponseModel.class);
浙公网安备 33010602011771号