Android 调用WCF实例详解

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



 
  
   
    
   
  

  
   
    
     
     
      
      
     
    
   
  
  
  
   
    
     
      
     
    
    
     
      
     
    
   
  

  
   
    
     
     
    
   
  
 
 
  
 


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. 最后运行结果

 Android 调用WCF实例详解_第1张图片

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

你可能感兴趣的:(Android 调用WCF实例详解)