天天看点

android调用wcf服务的xml,Android调用WCF

1.构建服务端程序

using System.ServiceModel;

namespace yournamespace

{

[ServiceContract(Name = "HelloService", Namespace = "http://www.master.haku")]

public interface IHello

{

[OperationContract]

string SayHello();

}

}

namespace YourNameSpace

{

public class YourService

{

public string SayHello(string words)

{

return "Hello " + words;

}

}

}

2. 构建IIS网站宿主

YourService.svc

Web.config

openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"

messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"

allowCookies="false">

maxBytesPerRead="4096" maxNameTableCharCount="16384" />

realm="" />

3. 寄宿服务

把网站发布到web服务器, 指定网站虚拟目录指向该目录

如果你能够访问http://你的IP:端口/虚拟目录/服务.svc

那么,恭喜你,你的服务端成功了!

4. 使用ksoap2调用WCF

去ksoap2官网

5. 在Eclipse中新建一个Java项目,测试你的服务

新建一个接口, 用于专门读取WCF返回的SoapObject对象

ISoapService

package junit.soap.wcf;

import org.ksoap2.serialization.SoapObject;

public interface ISoapService {

SoapObject LoadResult();

}

HelloService

package junit.soap.wcf;

import java.io.IOException;

import org.ksoap2.SoapEnvelope;

import org.ksoap2.serialization.SoapObject;

import org.ksoap2.serialization.SoapSerializationEnvelope;

import org.ksoap2.transport.HttpTransportSE;

import org.xmlpull.v1.XmlPullParserException;

public class HelloService implements ISoapService {

private static final String NameSpace = "http://www.master.haku";

private static final String URL = "http://你的服务器/虚拟目录/你的服务.svc";

private static final String SOAP_ACTION = "http://www.master.haku/你的服务/SayHello";

private static final String MethodName = "SayHello";

private String words;

public HelloService(String words) {

this.words = words;

}

public SoapObject LoadResult() {

SoapObject soapObject = new SoapObject(NameSpace, MethodName);

soapObject.addProperty("words", words);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // 版本

envelope.bodyOut = soapObject;

envelope.dotNet = true;

envelope.setOutputSoapObject(soapObject);

HttpTransportSE trans = new HttpTransportSE(URL);

trans.debug = true; // 使用调试功能

try {

trans.call(SOAP_ACTION, envelope);

System.out.println("Call Successful!");

} catch (IOException e) {

System.out.println("IOException");

e.printStackTrace();

} catch (XmlPullParserException e) {

System.out.println("XmlPullParserException");

e.printStackTrace();

}

SoapObject result = (SoapObject) envelope.bodyIn;

return result;

}

}

测试程序

package junit.soap.wcf;

import org.ksoap2.serialization.SoapObject;

public class HelloWcfTest {

public static void main(String[] args) {

HelloService service = new HelloService("Master HaKu");

SoapObject result = service.LoadResult();

System.out.println("WCF返回的数据是:" + result.getProperty(0));

}

}

经过测试成功

运行结果:

Hello Master HaKu

6. Android客户端测试

package david.android.wcf;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

import org.ksoap2.serialization.SoapObject;

public class AndroidWcfDemoActivity extends Activity {

private Button mButton1;

private TextView text;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mButton1 = (Button) findViewById(R.id.myButton1);

text = (TextView) this.findViewById(R.id.show);

mButton1.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

HelloService service = new HelloService("Master HaKu");

SoapObject result = service.LoadResult();

text.setText("WCF返回的数据是:" + result.getProperty(0));

}

});

}

}

7. 最后运行结果

android调用wcf服务的xml,Android调用WCF