1、请求
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.junit.Before;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
public class ctrlDemo {
private HttpClient httpClient;
@Before
public void setUp() {
httpClient = HttpClientBuilder.create().build();
}
@Test
public void test() throws Exception {
String url = "http://";
String xml = loadData("***.xml");
BaseResp baseReqsp = executePost(url, xml, httpClient);
assertTrue(baseReqsp.isSuccess());
}
private String loadData(String path) throws IOException {
ClassPathResource resource = new ClassPathResource(path);
return IOUtils.toString(resource.getInputStream());
}
public static void executePost(String url, String body, HttpClient httpClient) throws Exception{
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(HTTP.CONTENT_TYPE, "application/xml");//请求参数为XML格式
StringEntity entity = new StringEntity(body, "UTF-8");
httpPost.setEntity(entity);
HttpResponse resp = httpClient.execute(httpPost);
HttpEntity respEntity = resp.getEntity();
String text = EntityUtils.toString(respEntity, "UTF-8");
}
}
2、接收
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
@RequestMapping(value = "/xml/请求路径", method = RequestMethod.POST)
public void order(HttpServletRequest request, HttpServletResponse response) {
String xmlReq = IOUtils.toString(request.getInputStream());
System.out.println("data: {}", xmlReq);
// unmarshal : 使用 JAXB 解析 (具体如何解析请看 http://www.oschina.net/question/tag/jaxb )
//Object : 代表需要解析的JAVA类
Object data = unmarshal(xmlReq, Object.class, false);
}