Android 調(diào)用WCF實(shí)例詳解
Android 調(diào)用WCF實(shí)例
1. 構(gòu)建服務(wù)端程序
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. 構(gòu)建IIS網(wǎng)站宿主
YourService.svc
<%@ServiceHost Debug="true" Service="YourNameSpace.YourService"%>
Web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<serviceHostingEnvironment>
<serviceActivations >
<add relativeAddress="YourService.svc" service="YourNameSpace.YourService"/>
</serviceActivations >
</serviceHostingEnvironment >
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBindingCfg" closeTimeout="00:01:00"
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">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="YourNameSpace.YourService" behaviorConfiguration="ServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:59173/YourService"/>
</baseAddresses>
</host>
<endpoint binding="basicHttpBinding" contract="YourNameSpace.你的服務(wù)契約接口">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.web>
<compilation debug="true" />
</system.web>
</configuration>
3. 寄宿服務(wù)
把網(wǎng)站發(fā)布到web服務(wù)器, 指定網(wǎng)站虛擬目錄指向該目錄
如果你能夠訪問(wèn)http://你的IP:端口/虛擬目錄/服務(wù).svc
那么,恭喜你,你的服務(wù)端成功了!
4. 使用ksoap2調(diào)用WCF
去ksoap2官網(wǎng)
http://code.google.com/p/ksoap2-android/ 下載最新jar
5. 在Eclipse中新建一個(gè)Java項(xiàng)目,測(cè)試你的服務(wù)
新建一個(gè)接口, 用于專門讀取WCF返回的SoapObject對(duì)象
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://你的服務(wù)器/虛擬目錄/你的服務(wù).svc";
private static final String SOAP_ACTION = "http://www.master.haku/你的服務(wù)/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; // 使用調(diào)試功能
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;
}
}
測(cè)試程序
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返回的數(shù)據(jù)是:" + result.getProperty(0));
}
}
經(jīng)過(guò)測(cè)試成功
運(yùn)行結(jié)果:
Hello Master HaKu
6. Android客戶端測(cè)試
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返回的數(shù)據(jù)是:" + result.getProperty(0));
}
});
}
}
7. 最后運(yùn)行結(jié)果

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- 六款值得推薦的android(安卓)開源框架簡(jiǎn)介
- Android應(yīng)用開發(fā)SharedPreferences存儲(chǔ)數(shù)據(jù)的使用方法
- android TextView設(shè)置中文字體加粗實(shí)現(xiàn)方法
- Android 動(dòng)畫之TranslateAnimation應(yīng)用詳解
- Android Bitmap詳細(xì)介紹
- android壓力測(cè)試命令monkey詳解
- android PopupWindow 和 Activity彈出窗口實(shí)現(xiàn)方式
- android客戶端從服務(wù)器端獲取json數(shù)據(jù)并解析的實(shí)現(xiàn)代碼
- 解決Android SDK下載和更新失敗的方法詳解
- android listview優(yōu)化幾種寫法詳細(xì)介紹
- Android 動(dòng)畫之ScaleAnimation應(yīng)用詳解
相關(guān)文章
Android編程實(shí)現(xiàn)的自定義彈窗(PopupWindow)功能示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)的自定義彈窗(PopupWindow)功能,結(jié)合簡(jiǎn)單實(shí)例形式分析了Android自定義彈窗實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-03-03
Android打包上傳AAR文件到Maven倉(cāng)庫(kù)的示例
這篇文章主要介紹了Android打包上傳AAR文件到Maven倉(cāng)庫(kù)的示例,幫助大家更好的理解和學(xué)習(xí)使用Android開發(fā),感興趣的朋友可以了解下2021-03-03
Android自定義view實(shí)現(xiàn)滾動(dòng)選擇控件詳解
最近在開發(fā)中需要實(shí)現(xiàn)滾動(dòng)進(jìn)行類別的選擇,也就是我們所說(shuō)的滾動(dòng)選擇器,這里我們自定義來(lái)實(shí)現(xiàn)這個(gè)功能,這篇文章主要介紹了Android自定義view實(shí)現(xiàn)滾動(dòng)選擇控件2022-11-11
基于android實(shí)現(xiàn)五子棋開發(fā)
這篇文章主要為大家詳細(xì)介紹了基于android實(shí)現(xiàn)五子棋開發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
Android使用ImageView實(shí)現(xiàn)支持手勢(shì)縮放效果
這篇文章主要介紹了Android使用ImageView實(shí)現(xiàn)支持手勢(shì)縮放效果,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果(一)
這篇文章主要為大家詳細(xì)介紹了Flutter實(shí)現(xiàn)動(dòng)畫效果的第一篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Android開發(fā)之時(shí)間日期組件用法實(shí)例
這篇文章主要介紹了Android開發(fā)之時(shí)間日期組件用法,主要介紹了TimePicker和DatePicker組件,對(duì)于Android程序開發(fā)有不錯(cuò)的借鑒價(jià)值,需要的朋友可以參考下2014-08-08

