中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

軟件使用Java客戶端類調用C# WebService

發布時間:2021-11-03 13:41:51 來源:億速云 閱讀:203 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關軟件使用Java客戶端類調用C# WebService的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

使用這個類不用安裝任何第三方工具,因為采用http的方式發送xml文件,所以你只需要安裝好JDK就可以了。執行此類還可以獲得WebServices或xml rpc server返回的xml字符流,你可以根據返回的xml數據來進行其他程序處理。通過這種方式實現了Java平臺和.NET平臺的數據交換和Java客戶端類調用C# WebService。

下面是滿足Java客戶端類調用的源代碼SOAPClient4XG.java:

/**   * SOAPClient4XG. Read the SOAP envelope   file passed as the second * parameter, pass it to the SOAP endpoint   passed as the first parameter, and    * print out the SOAP envelope passed   as a response. with help from Michael  * Brennan 03/09/01  *   *  * @author Bob DuCharme  * @version 1.1  * @param SOAPUrl URL of SOAP Endpoint   to send request.  * @param xmlFile2Send A file with an XML   document of the request.   *  * 5/23/01 revision: SOAPAction added  */   import java.io.*;  import java.net.*;   public class SOAPClient4XG {  public static void main(String[] args)   throws Exception {   if (args.length < 2) { //小于  System.err.println("Usage: java SOAPClient4XG " +  "http://soapURL soapEnvelopefile.xml" +  " [SOAPAction]");  System.err.println("SOAPAction is optional.");  System.exit(1);  }   String SOAPUrl = args[0];   String xmlFile2Send = args[1];   String SOAPAction = "";  if (args.length > 2) //大于  SOAPAction = args[2];   // Create the connection where we're going   to send the file.  URL url = new URL(SOAPUrl);  URLConnection connection =   url.openConnection();  HttpURLConnection httpConn =   (HttpURLConnection) connection;   // Open the input file. After we copy   it to a byte array, we can see  // how big it is so that we can set the   HTTP Cotent-Length  // property. (See complete e-mail below   for more on this.)   FileInputStream fin =   new FileInputStream(xmlFile2Send);   ByteArrayOutputStream bout =   new ByteArrayOutputStream();   // Copy the SOAP file to the open connection.  copy(fin,bout);   fin.close();   byte[] b = bout.toByteArray();   // Set the appropriate HTTP parameters.  httpConn.setRequestProperty( "Content-Length",  String.valueOf( b.length ) );  httpConn.setRequestProperty("Content-Type","  text/xml; charset=utf-8");  httpConn.setRequestProperty("SOAPAction",SOAPAction);  httpConn.setRequestMethod( "POST" );  httpConn.setDoOutput(true);  httpConn.setDoInput(true);   // Everything's set up; send the XML   that was read in to b.  OutputStream out = httpConn.getOutputStream();  out.write( b );   out.close();   // Read the response and write it   to standard out.   InputStreamReader isr =  new InputStreamReader(httpConn.getInputStream());  BufferedReader in = new BufferedReader(isr);    String inputLine;   while ((inputLine = in.readLine()) != null)  System.out.println(inputLine);  in.close();  }   // copy method from From E.R. Harold's   book "Java I/O" public static void copy(InputStream in,   OutputStream out)   throws IOException {   // do not allow other threads to read from the  // input or write to the output while copying is // taking place   synchronized (in) {  synchronized (out) {   byte[] buffer = new byte[256];  while (true) {  int bytesRead = in.read(buffer);  if (bytesRead == -1) break;  out.write(buffer, 0, bytesRead);  }  }  }  }   }

編譯:javac SOAPClient4XG.java

運行的命令格式: java -classpath . SOAPClient4XG

http://localhost/BokeServices/Service1.asmx c:loginReq.xml

http://tempuri.org/UserLoginReq

不過先不要運行上面的命令,先介紹一下命令行的意思,http://localhost/BokeServices/Service1.asmx是C# WebService的地址;

c:loginReq..xml里的內容是Java客戶端類調用WebService方法的xml文件, http://tempuri.org是WebService方法的命名空間,一定要有,否則調用失敗,如果你在C# WebServices中使用了方法默認的命名空間的話,就使用http://tempuri.org,否則要與C#中定義的一致,UserLoginReq是C# WebServices的方法名。注意xml文件中的方法名和參數名是與C# WebServices的方法名、參數名是一一對應的(參數順序是可以顛倒的)。

我先介紹一個簡單的例子(c:loginReq.xml),這個xml文件調用了遠程C# WebService的UserLoginReq方法,并帶UserAcc(用戶名)和UserPwd(口令)兩個參數,調用成功后C#會自動返回一個xml格式的SOAP包。

〈?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〉  〈UserLoginReq xmlns="http://tempuri.org/"〉  〈UserAcc〉baozheng〈/UserAcc〉  〈UserPwd〉mypwd〈/UserPwd〉   〈/UserLoginReq〉  〈/soap:Body〉  〈/soap:Envelope〉

現在看一下C# WebServices的UserLoginReq的方法的定義:

public struct UserLoginResp  {  public string UserAcc;  public int Result;  }  [WebMethod]   public UserLoginResp UserLoginReq(string UserAcc,  string UserPwd,int ReqFrom)  {  …  }

注意結構UserLoginResp,C# WebServices返回SOAP信息時會自動將UserLoginResp結構轉換成xml的格式。

用此類做xml rpc server 的客戶端也很簡單,下文是一個客戶端rpc.xml文件,調用了xml rpc server 端實現的metaWeblog.deletePost方法。

〈?xml version="1.0" encoding="utf-8"?〉  〈methodCall〉  〈methodName〉metaWeblog.deletePost〈/methodName〉  〈params〉  〈param〉〈value〉appKeyValue〈/value〉〈/param〉  〈param〉〈value〉746〈/value〉〈/param〉   〈param〉〈value〉baozheng〈/value〉〈/param〉  〈param〉〈value〉Hello123〈/value〉〈/param〉  〈/params〉    〈/methodCall〉

調用命令的格式:

java -classpath %CLASSPATH%;. SOAPClient4XG.

http://192.168.25.97:8080/BokeeXmlRpc/xml-rpc rpc.xml

對比調用C# WebServices的命令行,可以看出調用xml rpc server的命令行少一個方法名參數。http://192.168.25.97:8080/BokeeXmlRpc/xml-rpc 是提供xml rpc 調用的server端servlet地址。

感謝各位的閱讀!關于“軟件使用Java客戶端類調用C# WebService”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜平县| 四子王旗| 孟津县| 隆子县| 三穗县| 赣州市| 廊坊市| 合江县| 张北县| 玉环县| 安宁市| 吉木萨尔县| 平和县| 个旧市| 元江| 绥芬河市| 商丘市| 湖北省| 开封市| 遂平县| 夏津县| 万载县| 周宁县| 闻喜县| 图片| 郁南县| 广汉市| 治县。| 五河县| 内丘县| 黎平县| 肥东县| 江城| 古蔺县| 昌邑市| 郧西县| 周至县| 洪泽县| 长宁县| 贵德县| 阿鲁科尔沁旗|