点击上方“猿芯”,选择“设为星标”
后台回复"1024",有份惊喜送给面试的你
方式1. 代理类工厂的方式,需要拿到对方的接口
try {
// 接口地址
// 代理工厂
JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
// 设置代理地址 wsdlAddress: WSDL地址(http://localhost:8082/ws/services/bank?wsdl)
jaxWsProxyFactoryBean.setAddress(wsdlAddress);
// 设置接口类型
jaxWsProxyFactoryBean.setServiceClass(ICommonService.class);
// 创建一个代理接口实现
ICommonService cs = (ICommonService) jaxWsProxyFactoryBean.create();
// 数据准备
String userName = "Leftso";
// 调用代理接口的方法调用并返回结果
String result = cs.sayHello(userName);
System.out.println("返回结果:" + result);
} catch (Exception e) {
e.printStackTrace();
}
方式2. 动态调用方式
//WSDL路径
String wsUrl = "http://localhost:8082/ws/services/bank?wsdl" ;
//方法名
String method = "getCaseProve";
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
Client client = factory.createClient(wsUrl);
Endpoint endpoint = client.getEndpoint();
QName opName = new QName(endpoint.getService().getName().getNamespaceURI(), method);
BindingInfo bindingInfo = endpoint.getEndpointInfo().getBinding();
System.out.println(client);
if (bindingInfo.getOperation(opName) == null) {
for (BindingOperationInfo operationInfo : bindingInfo.getOperations()) {
if (method.equals(operationInfo.getName().getLocalPart())) {
opName = operationInfo.getName();
break;
}
}
}
//请求报文
String xmlInput= "<Request RequestType=\"RegInfo\"><MachineInfo MachineAccount=\"1\" MachinePassword=\"1\"></MachineInfo><FiterInfo UnitNo=\""
+ unit
+ "\" HouseID=\""
+ houseId
+ "\" RecHouseNum=\""
+ recHouseNum + "\"></FiterInfo></Request>";
Object[] res = null;
try {
res = client.invoke(opName, xmlInput);
String xml = (String) res[0];
System.err.println("@@@@@@@@@@@@@@@@@"+xml);
} catch (Exception e) {
e.printStackTrace();
}
方式3. HttpURLConnection调用方式
public class PropertiesUtil {
private static final Logger logger = LoggerFactory
.getLogger(PropertiesUtil.class);
private static Properties properties = null;
private static String fileName = "/app.properties";
static {
properties = new Properties();
try {
properties.load(PropertiesUtil.class.getResourceAsStream(fileName));
} catch (IOException e) {
logger.error("加载配置文件失败", e);
}
}
public static Properties getProperties() {
return properties;
}
public static String getProp(String propName) {
return properties.getProperty(propName);
}
}
public static Map<String, String> resultInterface(String id,String type, String jsonStr) {
StringBuilder res = new StringBuilder();
// 1:创建服务地址
URL url;
String resultUserName = PropertiesUtil.getProp("resultUserName");
String resultPassWord = PropertiesUtil.getProp("resultPassWord");
Map<String, String> map = new HashMap<String, String>();
try {
url = new URL(PropertiesUtil.getProp("resultUrl"));
// 2:打开到服务地址的一个连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 3:设置连接参数
// 3.1设置发送方式:POST必须大写
connection.setRequestMethod("POST");
// 3.2设置数据格式:Content-type
connection.setRequestProperty("content-type", "text/xml;charset=utf-8");
// 3.3设置输入输出,新创建的connection默认是没有读写权限的,
connection.setDoInput(true);
connection.setDoOutput(true);
//"{\"ANNOUNCEMENT_CODE\": \"CSGGBH001\",\"ANNOUNCEMENT_CONNECT\": \"asdfasdfasdfasdfasdfasdfasdfsa\",\"ANNOUNCEMENT_DEADLINE\": \"20181031\",\"ANNOUNCEMENT_GUID\": \"71F15848-C296-4A60-883C-223C55E9E8D8\",\"ANNOUNCEMENT_START_TIME\": \"20181101\",\"ANNOUNCEMENT_TITLE\": \"公告标题\",\"ANNOUNCEMENT_TYPE\": \"1\",\"ANNOUNCEMENT_UNIT\": \"单位\",\"ATTACHMENT_SET_CODE\": \"123\",\"CANCEL_REASON\": \"撤销理由\",\"CHANGE_TIME\": \"20181101\",\"CONTACT_NUMBER\": \"13333333333\",\"CONTACT_PERSON\": \"联系人\",\"CREATE_TIME\": \"20181101\",\"DATA_TIMESTAMP\": \"20181101154911\",\"EMAIL\": \"123@qq.com\",\"END_DATE\": \"20181101\",\"FIELD_NUM\": \"123\",\"LAND_DISTRICT\": \"440601\",\"LIAISON_UNIT\": \"单位\",\"LISTING_DEADLINE\": \"\",\"LISTING_START_TIME\": \"\",\"LISTING_TYPE\": \"0\",\"PLATFORM_CODE\": \"91441900708017879M\",\"PUBLISHING_TIME\": \"20181101\",\"PUB_SERVICE_PLAT_CODE\": \"123707003283632515\",\"RETREAT_TIME\": \"20181101\",\"SUPPLY_TYPE\": \"1\",\"UNIFIED_DEAL_CODE\": \"B01-123707003283632515-20181025-000015-V\",\"UNIT_ADDRESS\": \"单位地址\",\"URL\": \"http://www.baidu.com\",\"ZIP_CODE\": \"215600\"}";
//TDJYGG
// 4:组织SOAP协议数据,发送给服务端
String soapXML = "<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\">"
+ " <soap12:Header> "
+ " <root xmlns=\"http://tempuri.org/\"> "
+ " <UserName>"+resultUserName+"</UserName> "
+ " <PassWord>"+resultPassWord+"</PassWord> "
+ " </root> "
+ " </soap12:Header> "
+ " <soap12:Body> "
+ " <Push xmlns=\"http://tempuri.org/\"> "
+ " <Type>"+type+"</Type> "
+ " <JsonStr>"+jsonStr+"</JsonStr>"
+ " </Push> "
+ " </soap12:Body> "
+ " </soap12:Envelope>";
OutputStream os = connection.getOutputStream();
os.write(soapXML.getBytes("utf-8"));
// 5:接收服务端的响应
int responseCode = connection.getResponseCode();
if (200 == responseCode) {// 表示服务端响应成功
InputStream is = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(is,"utf-8");
BufferedReader br = new BufferedReader(isr);
String temp = null;
while (null != (temp = br.readLine())) {
res.append(temp);
}
is.close();
isr.close();
br.close();
String xml = res.toString();
Document doc = DocumentHelper.parseText(xml); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
//System.out.println("根节点:" + rootElt.getStringValue());
Element nameElem = rootElt.element("Body").element("PushResponse").element("PushResult");
String code = nameElem.element("Code").getTextTrim();
String description = nameElem.element("Description").getTextTrim();
map.put("code", code);
map.put("description", description);
} else {
//res.append("调接口异常!");
map.put("code", "500");
map.put("description", "数据推送失败,服务端响应失败!");
logger.error("数据推送失败,服务端响应失败!");
}
os.close();
} catch (Exception e) {
//res.append("调接口异常!");
map.put("code", "500");
map.put("description", "数据推送异常,推送信息为trans_notice表或trans_target表的id>>>>:" + id);
logger.error("数据推送异常,推送信息为trans_notice表或trans_target表的id>>>>:" + id + "", e);
}
return map;
}
原文:https://www.cnblogs.com/gaomanito/p/10043753.html
往期推荐
作者简介:猿芯,一枚简单的北漂程序员。喜欢用简单的文字记录工作与生活中的点点滴滴,愿与你一起分享程序员灵魂深处真正的内心独白。我的微信号:WooolaDunzung,公众号【猿芯】输入 1024 ,有份面试惊喜送给你哦。
< END >
【猿芯】
微信扫描二维码,关注我的公众号。
分享不易,莫要干想,如果觉得有点用的话,动动你的发财之手,一键三连击:分享、点赞、在看,你们的鼓励是我分享优质文章的最强动力 ^_^
分享、点赞、在看,3连3连!