天天看點

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