java调用VB写的webservice接口,接口中含有两个结构

syncretize 2013-01-20 05:29:58
java调用VB写的webservice接口,接口中含有两个结构,如何调用;
...全文
146 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
syncretize 2013-01-22
  • 打赏
  • 举报
回复
如何解析XML内容呢,我上面那样做不对
tianfang 2013-01-22
  • 打赏
  • 举报
回复
不要自己写解析啊,用ws框架的客户端工具,生成接口对象。 一种ws框架不行就换一个,总可以找到现成解决方案的
syncretize 2013-01-21
  • 打赏
  • 举报
回复
这个接口是往数据库传值的,而且他们给的地址和文档都不能生成类,类是自己写的,可以调用接口但是值一个都没有传进去,只返回未成功的信息,改如何获取、解析xml文档
地雷 2013-01-21
  • 打赏
  • 举报
回复
你调用对方的webservice接口使用URL获取XML内容然后解析就可以了嘛?
syncretize 2013-01-21
  • 打赏
  • 举报
回复
之前用的方法, call.invoke(new Object[](a,b)); //a,b是两个对象,分别set了值 这种方法不行, 用上面文档的信息,说是用soap方式拼凑,我试着做了,可是不清楚如何传值,如何使用,我应该拼错了,求指点: package com.wh; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.io.StringReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.net.URLEncoder; import java.util.Vector; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.CharacterData; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; public class SoapTest { /** * @param args * @throws Exception * java hnntsx.xuzhe.CallHTTPService */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub String MethodName = "ImportVioVehicleWithPhoto "; String XmlNamespace = "http://tempuri.org//SurveilService"; //采用SOAP方式调用web service String SoapAction = XmlNamespace + MethodName; Vector ParamNames = new Vector(); Vector ParamData = new Vector(); ParamNames.addElement("Xh"); ParamData.addElement("3402001722166322"); ParamNames.addElement("Xh"); ParamData.addElement("3402001722166322"); ParamNames.addElement("Wfxw"); ParamData.addElement("222"); StringBuffer sb=new StringBuffer(); sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); sb.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"); sb.append("<soap:Body>"); sb.append("<" + MethodName + " xmlns=\"" + XmlNamespace + "\">"); sb.append("<AVioVehicle>"); sb.append("<CodeColumns>"); sb.append("<string>"+"</string>"); sb.append("<string>"+"</string>"); sb.append("</CodeColumns>"); sb.append("<CodeTexts>"); sb.append("<string>"+"</string>"); sb.append("<string>"+"</string>"); sb.append("</CodeTexts>"); sb.append("<NewGlbm>"+"</NewGlbm>"); sb.append("<Xh>"+"</Xh>"); sb.append("<Wfsj>"+"</Wfsj>"); sb.append("<Wfdd>"+"</Wfdd>"); sb.append("<Wfxw>"+"</Wfxw>"); sb.append("<Jcsd>"+"</Jcsd>"); sb.append("<Xsfx>"+"</Xsfx>"); sb.append("<Hpzl>"+"</Hpzl>"); sb.append("<Hphm>"+"</Hphm>"); sb.append("<Cjfs>"+"</Cjfs>"); sb.append("<Cjbm>"+"</Cjbm>"); sb.append("<Hdbj>"+"</Hdbj>"); sb.append("<Bz>"+"</Bz>"); sb.append("<Xzsd>"+"</Xzsd>"); sb.append("<Tpcclx>"+"</Tpcclx>"); //Parameters passed to the method are added here // for (int t = 0; t < ParamNames.size(); t++) { // String name = (String) ParamNames.elementAt(t); // String data = (String) ParamData.elementAt(t); // sb.append("<" + name + ">" + data + "</" + name + ">"); // // } sb.append("</AVioVehicle>"); sb.append("<AVioVehPhoto>"); sb.append("<Xh>"+"</Xh>"); sb.append("<Hpzl>"+"</Hpzl>"); sb.append("<Hphm>"+"</Hphm>"); sb.append("<Zp1>"+"</Zp1>"); sb.append("<Zp2>"+"</Zp2>"); sb.append("<Zp3>"+"</Zp3>"); //Parameters passed to the method are added here // for (int t = 0; t < ParamNames.size(); t++) { // String name = (String) ParamNames.elementAt(t); // String data = (String) ParamData.elementAt(t); // sb.append("<" + name + ">" + data + "</" + name + ">"); // // } sb.append("</AVioVehPhoto>"); sb.append("</" + MethodName + ">"); sb.append("</soap:Body>"); sb.append("</soap:Envelope>"); System.out.println("整理数据报文"); System.out.println(sb.toString()); // send an HTTP request to the web service String soap = sb.toString(); //必须加上编码方式,否则中文会乱码 byte[] data = soap.getBytes("UTF-8"); URL url = new URL("http://172.19.1.22:9080/ViolationService/Surveil.asmx"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(12 * 1000); conn.setDoOutput(true);//如果通过post提交数据,必须设置允许对外输出数据 conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8"); conn.setRequestProperty("Content-Length", String.valueOf(data.length)); conn.setRequestProperty("SOAPAction", SoapAction); OutputStream outStream = conn.getOutputStream(); outStream.write(data); outStream.flush(); outStream.close(); int Result = conn.getResponseCode(); if(Result==200){ byte[] data1 = readInputStream(conn.getInputStream()); String inputLine1 = new String(data1,"utf-8"); String inputLine; int start = 0; start = inputLine1.indexOf("<?xml") ; //Extract a singe return parameter inputLine = inputLine1.substring(start); System.out.println(inputLine); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(inputLine)); Document doc = db.parse(is); NodeList nodes = doc.getElementsByTagName(MethodName + "Result"); Element line = (Element) nodes.item(0); Node child = line.getFirstChild(); String retval=child.getNodeValue(); System.out.println("Name: " + retval); } System.out.println("Result[" + Result + "]"); } public static byte[] readInputStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while( (len = inStream.read(buffer)) !=-1 ){ outSteam.write(buffer, 0, len); } outSteam.close(); inStream.close(); return outSteam.toByteArray(); } }
syncretize 2013-01-21
  • 打赏
  • 举报
回复
SOAP 1.1 以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。 POST /ViolationService/Surveil.asmx HTTP/1.1 Host: 172.19.1.22 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org//SurveilService/ImportVioVehicleWithPhoto" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ImportVioVehicleWithPhoto xmlns="http://tempuri.org//SurveilService"> <AVioVehicle> <CodeColumns> <string>string</string> <string>string</string> </CodeColumns> <CodeTexts> <string>string</string> <string>string</string> </CodeTexts> <NewGlbm>string</NewGlbm> <Xh>string</Xh> <Wfsj>dateTime</Wfsj> <Wfdd>string</Wfdd> <Wfxw>string</Wfxw> <Jcsd>decimal</Jcsd> <Xsfx>string</Xsfx> <Hpzl>string</Hpzl> <Hphm>string</Hphm> <Cjfs>string</Cjfs> <Cjbm>string</Cjbm> <Hdbj>string</Hdbj> <Bz>string</Bz> <Xzsd>decimal</Xzsd> <Tpcclx>string</Tpcclx> </AVioVehicle> <AVioVehPhoto> <Xh>string</Xh> <Hpzl>string</Hpzl> <Hphm>string</Hphm> <Zp1>base64Binary</Zp1> <Zp2>base64Binary</Zp2> <Zp3>base64Binary</Zp3> </AVioVehPhoto> </ImportVioVehicleWithPhoto> </soap:Body> </soap:Envelope> HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ImportVioVehicleWithPhotoResponse xmlns="http://tempuri.org//SurveilService"> <ImportVioVehicleWithPhotoResult>string</ImportVioVehicleWithPhotoResult> </ImportVioVehicleWithPhotoResponse> </soap:Body> </soap:Envelope>
为啥呢 2013-01-21
  • 打赏
  • 举报
回复
要xml结构看wsdl文档就行了。 察看方法:webservice路径?wsdl
为啥呢 2013-01-20
  • 打赏
  • 举报
回复
一般两条路,一条去找开发这个webservice的人让他改成基本类型,另一条解析XML
syncretize 2013-01-20
  • 打赏
  • 举报
回复

50,531

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧