axis,axis 2呼び出し.netのwebservice
4486 ワード
今日1人の友达がjava呼び出し.netのwebservice机能を寻ねて、2时间振り回して、すべて振り回して、贴って、使う友达が回り道を少なくすることを望みます
1、axis呼び出し.netのwebservice
2、axis 2呼び出し.netのwebservice
axis 2呼び出しはそんなに書く必要はありません.次の手順に従って、一歩一歩、簡単には想像できません.
1、axis 2をダウンロードする(apache公式サイトにwww.apache.orgをダウンロードする)
2、私がダウンロードしたのはaxis 2-1.5-bin.zipで、現在のフォルダに解凍します
3、binディレクトリに入る(F:studyjavaserviceaxis 2axis 2-1.5bin)
4、cmdを開き、ステップ3のbinディレクトリに入り、wsdl 2 java.bat-uriを入力するhttp://www.webxml.c
om.cn/WebServices/WeatherWebServices.asmx?wsdl、折り返し
5、binディレクトリの下でsrcディレクトリを生成し、srcディレクトリの下の2つのクラスをeclipse開発ディレクトリの下に試験する
6、テストクラスTestを構築し、コードは以下の通りである.
注意しなければならないのはこのクラスです
GetWeatherbyCityName、これはもともと.net webserviceの1つの方法で、以下の通りです.
axis 2でjavaコードを生成すると、自動的に対応するオブジェクトが生成されます.webserviceが渡すパラメータは、このオブジェクトに値を付ける操作で完了できます.上記のように、広州の天気を調べるには、city.settheCityName(「広州」)に設定します.
ポイント
.net webserviceではArrayOfStringが返され、javaにはこのオブジェクトがないため、axis 2は自動的にこのオブジェクトを生成し、String[]str=array.getString()などの対応する配列に変換すればよい.axisバージョンでは、戻りタイプが使用されていますが、戻りタイプ設定の他にStringなどのエラーが発生し、VECTOR、すなわちcall.setReturnType(XMLType.SOAP_VECTOR)にしか設定できません.文字列が1つしか返されない場合は、STRINGを直接使用できます.これにより、正しい戻りを確認できます.
2つのバージョンを比較して、やはりaxis 2の使用が便利だと思います
1、axis呼び出し.netのwebservice
package test;
import java.net.URL;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.rpc.ParameterMode;
public class Test {
public static void test() throws Exception{
Service service = new Service();
Call call = null;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"));
call.setOperationName(new QName("http://WebXml.com.cn/","getWeatherbyCityName"));
call.addParameter(new QName("http://WebXml.com.cn/", "theCityName"),XMLType.SOAP_VECTOR,ParameterMode.IN);
call.setReturnType(XMLType.SOAP_VECTOR);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://WebXml.com.cn/getWeatherbyCityName");
System.out.println(call.invoke(new Object[]{" "}));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
test();
}
}
2、axis 2呼び出し.netのwebservice
axis 2呼び出しはそんなに書く必要はありません.次の手順に従って、一歩一歩、簡単には想像できません.
1、axis 2をダウンロードする(apache公式サイトにwww.apache.orgをダウンロードする)
2、私がダウンロードしたのはaxis 2-1.5-bin.zipで、現在のフォルダに解凍します
3、binディレクトリに入る(F:studyjavaserviceaxis 2axis 2-1.5bin)
4、cmdを開き、ステップ3のbinディレクトリに入り、wsdl 2 java.bat-uriを入力するhttp://www.webxml.c
om.cn/WebServices/WeatherWebServices.asmx?wsdl、折り返し
5、binディレクトリの下でsrcディレクトリを生成し、srcディレクトリの下の2つのクラスをeclipse開発ディレクトリの下に試験する
6、テストクラスTestを構築し、コードは以下の通りである.
import cn.com.webxml.WeatherWebServiceStub;
import cn.com.webxml.WeatherWebServiceStub.ArrayOfString;
import cn.com.webxml.WeatherWebServiceStub.GetWeatherbyCityName;
public class Test {
public static void test1(){
try{
WeatherWebServiceStub stub = new WeatherWebServiceStub();
stub._getServiceClient().getOptions().setProperty(
org.apache.axis2.transport.http.HTTPConstants.CHUNKED,
Boolean.FALSE);
GetWeatherbyCityName city = new GetWeatherbyCityName();
city.setTheCityName(" ");
ArrayOfString array = stub.getWeatherbyCityName(city).getGetWeatherbyCityNameResult();
String[] str = array.getString();
for(String s : str){
System.out.println(s);
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
test1();
}
}
注意しなければならないのはこのクラスです
GetWeatherbyCityName、これはもともと.net webserviceの1つの方法で、以下の通りです.
POST /WebServices/WeatherWebService.asmx HTTP/1.1
Host: www.webxml.com.cn
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://WebXml.com.cn/getWeatherbyCityName"
<?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>
<getWeatherbyCityName xmlns="http://WebXml.com.cn/">
<theCityName>string</theCityName>
</getWeatherbyCityName>
</soap:Body>
</soap:Envelope>
axis 2でjavaコードを生成すると、自動的に対応するオブジェクトが生成されます.webserviceが渡すパラメータは、このオブジェクトに値を付ける操作で完了できます.上記のように、広州の天気を調べるには、city.settheCityName(「広州」)に設定します.
ポイント
.net webserviceではArrayOfStringが返され、javaにはこのオブジェクトがないため、axis 2は自動的にこのオブジェクトを生成し、String[]str=array.getString()などの対応する配列に変換すればよい.axisバージョンでは、戻りタイプが使用されていますが、戻りタイプ設定の他にStringなどのエラーが発生し、VECTOR、すなわちcall.setReturnType(XMLType.SOAP_VECTOR)にしか設定できません.文字列が1つしか返されない場合は、STRINGを直接使用できます.これにより、正しい戻りを確認できます.
2つのバージョンを比較して、やはりaxis 2の使用が便利だと思います