建了一个CXF服务,可以在tomcat7上跑.但android不能调用。代码如下:IcxfWB .java
import javax.jws.WebService;
import javax.jws.WebParam;
import javax.jws.WebMethod;
@WebService
public interface IcxfWB {
@WebMethod
String sayHello(@WebParam(name="name") String name);}
================================
CxfWBImpl.java
public class CxfWBImpl implements IcxfWB{
public String sayHello(String name) {
return "Hello "+name;
}}
============================================
andorid代码如下:MainActivity.javapackage com.example.testandr;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;import android.widget.EditText;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
//http://localhost:8080/cxftest/sayHello?wsdl
public class MainActivity extends Activity {
final static String SERVICE_NS = "http://unknown.namespace/";
final static String SERVICE_URL = "http://10.0.0.15:8080/cxftest/sayHello";
private EditText txt1;
private EditText txt2;
/** Called when the activity is first created. */ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt1 = (EditText) findViewById(R.id.editText1);
txt2 = (EditText) findViewById(R.id.editText2);
//调用的方法
String methodName = "sayHello";
//创建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("name", "1006010054");
//将SoapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息
envelope.dotNet=false;
envelope.bodyOut = request;
try{
//调用webService
ht.call(null, envelope);
//txt1.setText("看看"+envelope.getResponse());
if(envelope.getResponse() != null){
txt2.setText("有返回");
SoapObject result = (SoapObject) envelope.bodyIn;
String name = result.getProperty(0).toString();
System.out.println(name);
txt1.setText("返回值 = "+name);
}else{
txt2.setText("无返回");
}
}catch (Exception e) {
e.printStackTrace();
System.out.println( e.getMessage().toString());
} } @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}}
import javax.jws.WebService;
import javax.jws.WebParam;
import javax.jws.WebMethod;
@WebService
public interface IcxfWB {
@WebMethod
String sayHello(@WebParam(name="name") String name);}
================================
CxfWBImpl.java
public class CxfWBImpl implements IcxfWB{
public String sayHello(String name) {
return "Hello "+name;
}}
============================================
andorid代码如下:MainActivity.javapackage com.example.testandr;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;import android.widget.EditText;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
//http://localhost:8080/cxftest/sayHello?wsdl
public class MainActivity extends Activity {
final static String SERVICE_NS = "http://unknown.namespace/";
final static String SERVICE_URL = "http://10.0.0.15:8080/cxftest/sayHello";
private EditText txt1;
private EditText txt2;
/** Called when the activity is first created. */ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt1 = (EditText) findViewById(R.id.editText1);
txt2 = (EditText) findViewById(R.id.editText2);
//调用的方法
String methodName = "sayHello";
//创建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("name", "1006010054");
//将SoapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息
envelope.dotNet=false;
envelope.bodyOut = request;
try{
//调用webService
ht.call(null, envelope);
//txt1.setText("看看"+envelope.getResponse());
if(envelope.getResponse() != null){
txt2.setText("有返回");
SoapObject result = (SoapObject) envelope.bodyIn;
String name = result.getProperty(0).toString();
System.out.println(name);
txt1.setText("返回值 = "+name);
}else{
txt2.setText("无返回");
}
}catch (Exception e) {
e.printStackTrace();
System.out.println( e.getMessage().toString());
} } @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}}
解决方案 »
- 跪求android中水平仪的实例
- 下载新浪微博SDK后怎么创建一个类发布一条微博
- activity 里面的this 怎么理解?
- 求个dialog
- 在线求助一个带渐变,阴影效果的png图片的问题!
- 关于andriod studio的问题
- android gridview
- Flag android.useDeprecatedNdk is no longer supported
- 关于uiautomator,对textview的naf属性为True时怎么样获取内容
- service进程间通信的问题
- andriord 新建工程,运行不能输出helloworld ,报错Unhandled event loop exception
- android怎么在外部类中操作button的方法
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testandr"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" /> <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- <intent-filter>
<data
android:host="Androidtest"
android:scheme="aone" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="te" /> -->
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
===========================================================
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" /> <EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" > <requestFocus />
</EditText> <EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" /></LinearLayout>
android:host="Androidtest"
android:scheme="aone" /> 隐去