Android作为CXF客户端调用服务端。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android作为CXF客户端调用服务端。相关的知识,希望对你有一定的参考价值。
1 加载jar
下载jar包,放在libs下
通过Project Structure添加jar依赖
成功后就会在build.gradle下添加
代码
final static String SERVICE_NS = "http://ws.service.mService.et.cn/";
final static String SERVICE_URL = "http://192.168.9.59:8080/DSer/service/SysService?WSDL";
private EditText txt1;
private EditText txt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//注意下面两行
StrictMode.ThreadPolicy policy= new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.activity_cxf);
Button button = findViewById(R.id.cxf_button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Toast.makeText(CxfActivity.this,"ceshi",Toast.LENGTH_LONG).show();
getCxf();
}
});
txt1 = findViewById(R.id.cxf_EditText1);
txt2 = findViewById(R.id.cxf_EditText2);
}
public void getCxf() {
//调用的方法
String methodName = "getEtUser";
//创建httpTransportSE传输对象
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
ht.debug = true;
//使用soap1.1协议创建Envelop对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//实例化SoapObject对象
SoapObject request = new SoapObject(SERVICE_NS, methodName);
/**
* 设置参数,参数名不一定需要跟调用的服务器端的参数名相同,只需要对应的顺序相同即可
* */
request.addProperty("userName", "000");
//将SoapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息
envelope.bodyOut = request;
try{
//调用webService
ht.call(null, envelope);
//txt1.setText("看看"+envelope.getResponse());
if(envelope.getResponse() != null){
txt2.setText("有返回");
SoapObject result = (SoapObject) envelope.bodyIn;
SoapObject soap = (SoapObject) result.getProperty(0); //这个例子是返回一个对象。
String name =soap.getProperty("name").toString();
String userName =soap.getProperty("userName").toString();
String department =soap.getProperty("department").toString();
txt1.setText("返回值 = "+ name+ " "+userName + " " +department);
}else{
txt2.setText("无返回");
}
}catch (Exception e) {
e.printStackTrace();
}
}
androidManifest.xml
AndroidManifest.xml下添加
<uses-permission android:name="android.permission.INTERNET" />
以上是关于Android作为CXF客户端调用服务端。的主要内容,如果未能解决你的问题,请参考以下文章
cxf webservice生成客户端代码及调用服务端遇到的问题