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

<%@ServiceHost Debug="true" Service="YourNameSpace.YourService"%>

  Web.config

<?xml version="1.0" encoding="utf-8"?>                                                                                                                                                         

3. 寄宿服务

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

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

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

4. 使用ksoap2调用WCF

  去ksoap2官网

  http://code.google.com/p/ksoap2-android/ 下载最新jar

 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;  /** Called when the activity is first created. */  @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. 最后运行结果

 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多相关文章

  1. Android(安卓)input keyevent
  2. android截图代码
  3. android双击返回键退出程序
  4. android检查sqlite数据库中是否存在某个元素
  5. Android中自定义通用Json解释器
  6. Android(安卓)屏幕截图 代码
  7. android之纵横屏幕切换时保存数据
  8. Android(安卓)防止锁屏服务暂时停止运行
  9. android 获取sd卡根目录

随机推荐

  1. android 获取root修改系统时间
  2. Android(安卓)Unparsed aapt error(s)! C
  3. android开发常用问题总结
  4. Android常用URI收藏
  5. android唤醒屏幕/保持屏幕唤醒
  6. RN 打包流程
  7. android activity 设置为单点触摸
  8. android 使图片显示 圆角
  9. android 常用混淆
  10. android 根据Uri获取文件绝对路径