下面说一下Android如何通过asp.net向服务器提交数据,我们此问题分成两块,第一块是asp.net,第二块是Android app。
asp.net:
1.首先Visual Studio打开或新建一个asp.net网站
2.在解决方案资源管理器窗口中的网站节点右键添加新项,选择Web服务(图1),取名,这样就生成了一个asmx页面,可以看到系统自动生成了一个HelloWorld的字符串方法,将asmx页面设为起始页,运行,可以看到(图2)有一个HelloWorld链接,点击就可以看到它的输出内容。
3.关闭asmx页面,我们自己写一个简单的方法,比如输出一个两数相加的方法。再次运行,可以看到asmx页面多了一个Add方法,点击,输入相应参数,就得到了两数相加的结果。
[WebMethod]
public int Add(int a, int b)
{
return a + b;
}
Android app
1.用Android studio或eclipse打开或新建一个项目。
2.在AndroidManifest.xml添加网络权限。权限如下
<!-- 查看网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 互联网 -->
<uses-permission android:name="android.permission.INTERNET" />。
3.在布局文件中添加一个TextView用于显示处理结果(代码略)。
4.引入一个ksoap2的第三方jar包。一会我们需要通过它来实现对接刚才建立的asp.net网站(Web Api).
5.建立一个”种子类“,代码如下
public class SoapObject_Property
{
public String PropertyName="";
public Object PropertyValue=null;
public SoapObject_Property()
{
this.PropertyName="";
this.PropertyValue=null;
}
}
6.建立一个”Util类“,代码如下:
public class AsmxUtil
{
public String url="";
private boolean issuccess=true;
public AsmxUtil(String url)
{
this.url=url;
}
public AsmxUtil()
{
}
public String GetasmxConent(String methodname, ArrayList<SoapObject_Property> ArrSOOP)
{
final String servicens="http://tempuri.org/";
final String soapaction="http://tempuri.org/"+methodname;
String outresult="";
//http://localhost/swaddle/SwaddleVideoService.asmx
//创建HttpTransportSE传输对象,该对象用于调用Web Service操作
final HttpTransportSE ht = new HttpTransportSE(url);
ht.debug = true;
//使用SOAP1.1协议创建Envelop对象。从名称上来看,SoapSerializationEnvelope代表一个SOAP消息封包;但ksoap2-android项目对
//SoapSerializationEnvelope的处理比较特殊,它是HttpTransportSE调用Web Service时信息的载体--客户端需要传入的参数,需要通过
//SoapSerializationEnvelope对象的bodyOut属性传给服务器;服务器响应生成的SOAP消息也通过该对象的bodyIn属性来获取。
final