Jersey调用Webservice Restful接口
来源:互联网 发布:Affinity photo mac 编辑:程序博客网 时间:2024/06/08 19:20
Jersey调用Restful接口
接口定义:
接口调用
import com.neefull.dataexchange.util.StrUtils;
import com.neefull.dataexchange.util.WebServiceUtils;
import com.neefull.dataexchange.util.XmlUtils;
import com.neefull.dataexchange.ws.model.SupervisionRequestModel;
import com.neefull.dataexchange.ws.model.SupervisionResponseModel;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
/**
* Created by JacksonFeng on 2017/7/19.
*/
public class WadlTest {
public static void main(String[] args) throws Exception { // 创建默认的httpClient实例. SupervisionRequestModel model = new SupervisionRequestModel(); model.setWS_USERNAME("syjadmin"); model.setWS_PASSWORD("nifu@123"); model.setENTY_TYPE("22"); model.setETPS_NAME("街道街道街道街道"); String datas = XmlUtils.model2Xml(model, SupervisionRequestModel.class, "PUNISHMENT"); datas = StrUtils.regexReplace(datas, "__", "_"); /*************************/ javax.ws.rs.client.Client client1 = ClientBuilder.newClient(); WebTarget target = client1.target("http://${ip}/manainf/services/businessService/punishmentInfo"); Response response = target.queryParam("${paramName}", datas).request().post(Entity.entity(datas, MediaType.APPLICATION_FORM_URLENCODED_TYPE));//或者json,具体参考接口定义的可接受的参数值类型。 System.out.println(ToStringBuilder.reflectionToString(response, ToStringStyle.MULTI_LINE_STYLE));//打印Response InputStream is = (InputStream) response.getEntity(); int len = 0; byte[] b = new byte[2048]; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while ((len = is.read(b, 0, 2048)) != -1) { bos.write(b, 0, len); } String rst = new String(bos.toByteArray(), "UTF-8"); System.out.println("Returned:" + rst); SupervisionResponseModel responseModel = XmlUtils.xml2OneModel(rst, SupervisionResponseModel.class, "RESPONSE"); System.out.println(ToStringBuilder.reflectionToString(responseModel, ToStringStyle.MULTI_LINE_STYLE)); System.out.println("---------------------------------------------"); String rr = WebServiceUtils.invokeWADL(new WebServiceUtils.WebserviceConfig("http://10.85.21.129/manainf/services/businessService/punishmentInfo", "info", MediaType.APPLICATION_FORM_URLENCODED_TYPE, datas)); SupervisionResponseModel rm = XmlUtils.xml2OneModel(rr, SupervisionResponseModel.class, "RESPONSE"); System.out.println(ToStringBuilder.reflectionToString(responseModel, ToStringStyle.MULTI_LINE_STYLE));}
}
使用到自定义工具类
代码:
import com.neefull.dataexchange.ws.datadownload.SaxXmlReaderHandler;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.xml.Xpp3Driver;import org.apache.log4j.Logger;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import java.io.ByteArrayInputStream;public class XmlUtils { public static T xml2OneModel(String xmlContent, Class clazz, String typeAliasName) throws Exception { SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser(); SaxXmlReaderHandler saxXmlReaderHandler = new SaxXmlReaderHandler(clazz, typeAliasName); saxParser.parse(new ByteArrayInputStream(xmlContent.getBytes("UTF-8")), saxXmlReaderHandler); return (T) saxXmlReaderHandler.getObj(); } /** * 单实例 model转换为 xml字符串 * * @param clazz * @param typeAliasName * @return */ public static String model2Xml(Object data, Class clazz, String typeAliasName{ XStream xStream = new XStream(new Xpp3Driver()); xStream.alias(typeAliasName, clazz); return decorateHeader(xStream.toXML(data)); } static String decorateHeader(String source) { StringBuilder sb = new StringBuilder(); if (null == source) { source = ""; } sb.append("
####测试结果 :org.apache.cxf.jaxrs.impl.ResponseImpl@640e0e2f[ status=200 entity=sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@50a4b7af entityAnnotations= metadata={Accept-Ranges=[bytes], Content-Length=[140], content-type=[application/xml], Date=[Tue, 25 Jul 2017 04:05:05 GMT], Content-Type=[application/xml]} outMessage={http.connection.address=org.apache.cxf.transport.http.Address@6e176b85, org.apache.cxf.invocation.context={ResponseContext={}, RequestContext={response.class=class javax.ws.rs.core.Response, org.apache.cxf.request.method=POST, javax.ws.rs.core.Configuration=org.apache.cxf.jaxrs.impl.ConfigurationImpl@4394213a, org.apache.cxf.request.uri=。。。。} entityClosed=false entityBufferred=false lastEntity=]
Returned:
<?xml version="1.0" encoding="UTF-8"?><RESPONSE><STATUS>-1</STATUS><MESSAGE>操作失败,接口参数格式不合法!</MESSAGE></RESPONSE> com.neefull.dataexchange.ws.model.SupervisionResponseModel@7193802f[ status=-1 message=操作失败,接口参数格式不合法! ]
- Jersey调用Webservice Restful接口
- 基于jersey搭建RESTful风格的WebService接口
- sping+Jersey实现RESTful webservice
- Jersey RESTful WebService框架简介
- 使用jersey搭建restful接口
- jersey调用webservice
- 在Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用
- 在Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用
- Jersey 极致简单的Restful WebService实现
- 使用java实现Restful webservice(Jersey)
- 使用Jersey开发RESTful的webservice服务
- 使用 jersey构建RESTful的WebService
- Jersey Restful WebService 接收 JSON 数组
- Spring + Jersey构建发布Restful WebService
- 使用Jersey创建RESTful风格的WebService
- Jersey实现Restful webservice及Ajax访问
- 使用Jersey来创建RESTful WebService
- 使用Jersey来创建RESTful WebService
- 解决“只能通过Chrome网上应用商店安装该程序”的方法
- oh,my goddess-OJ
- Huffman树的基本操作
- 字段跟属性区别
- React-Native中AsyncStorage的用法
- Jersey调用Webservice Restful接口
- Unix/Linux编程实践教程–书评
- Cassandra nodetool常用操作
- String
- WIFI MAC获取方式
- androidstudio配置及问题
- android调用外部地图应用
- 思维导图--数据结构导论(1)
- VCC VSS VDD