http调用webservice工具类
最近遇到个webservice的对接,上百个接口,但是统一都是入参出参都是统一一个json
所以写了一个工具类,下面上代码
需要用到的jar
<dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency>
代码
public static HashMap<String,String> getData(String url,String op, String xmlPara){ //统一接口,可以统一接入封装xml xmlPara = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">\n" + " <soap12:Body>\n" + //这里我加入op是因为接口统一都是已接口名字作为入参的xml节点 " <"+op+" xmlns=\"http://tempurl.org\">\n" + " <as_inputjson>"+xmlPara+"</as_inputjson>\n" + " </"+op+">\n" + " </soap12:Body>\n" + "</soap12:Envelope>" ; HashMap<String,String> res = new HashMap<>(); //这里写你的地址url String endpoint = url+"?op"+op; PostMethod postMethod = new PostMethod(endpoint); byte[] b; try { b = xmlPara.getBytes("utf-8"); InputStream is = new ByteArrayInputStream(b,0,b.length); InputStreamRequestEntity re = new InputStreamRequestEntity(is,b.length,"application/soap+xml; charset=utf-8"); //把Soap请求数据添加到PostMethod中 postMethod.setRequestEntity(re); //生成一个HttpClient对象,并发出postMethod请求 HttpClient httpClient = new HttpClient(); int statusCode = httpClient.executeMethod(postMethod); if(200==statusCode){ String getServerData = postMethod.getResponseBodyAsString(); //System.out.println("----->"+getServerData); //获取返回值状态标识,标识为0:成功;非0:失败 res.put("status", "0"); //这里的op也是一样的作用,返回都是接口名字+Result作为返回节点,我这里都是json返回,如果需要xml返回自行解析就好 res.put("msg", getServerData.substring(getServerData.indexOf("<"+op+"Result>")+18,getServerData.indexOf("</"+op+"Result>"))); } } catch (Exception e) { res.put("status", "1"); res.put("msg", e.toString()); e.printStackTrace(); } return res; }
发表评论