android调用 asp.net webservice

public SoapPrimitive detail;
	// 命名空间
	private static final String NAMESPACE = "http://tempuri.org/";
	//webservice地址
	private static String WebServiceURL = "http://www.xxx.com/Services/xxx.asmx";
	//此处是命名空间+方法名
    private static String SOAP_ACTION = "http://tempuri.org/GetComapnyXML";
    //WSDL文档中的URL
    private static final String WSDL="http://www.xxx.com/Services/xxxx.asmx?wsdl";
	private OnClickListener calc = new OnClickListener() {
		@Override
		public void onClick(View v) {
			//第一个参数是命名空间第二个参数是要调用的方法
			SoapObject request = new SoapObject(NAMESPACE, "GetComapnyXML");
			/* 第一种传参,参数名不一定要于webservice参数统一,但一定要按顺序
			request.addProperty("StartCount", "1");
			request.addProperty("EndCount", "2");
			request.addProperty("jobCount", "2");
			*/
			
			/* 第二种传参 */
			 PropertyInfo pi = new PropertyInfo();
			 pi.setName("StartCount");
			 pi.setValue("1");
			 request.addProperty(pi); 
			 pi = new PropertyInfo();
			 pi.setName("EndCount"); 
			 pi.setValue("2");
			 request.addProperty(pi); 
			 pi = new PropertyInfo(); 
			 pi.setName("jobCount"); 
			 pi.setValue("2");
			 request.addProperty(pi); 

			Element[] header = new Element[1];
			header[0] = new Element().createElement(NAMESPACE, "CompanyToken");
			//如果有多个按下面一样写法
			Element pwd = new Element().createElement(NAMESPACE, "CompanyKey");
			pwd.addChild(Node.TEXT, "密码");
			header[0].addChild(Node.ELEMENT, pwd);
			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
					SoapEnvelope.VER11);
			envelope.headerOut = header;
			envelope.bodyOut = request;
			envelope.dotNet = true;
			envelope.setOutputSoapObject(request);
		   //HttpTransportSE ht = new HttpTransportSE(WebServiceURL);
		   AndroidHttpTransport httpTranstation=new AndroidHttpTransport(WSDL);
			try { 
				//ht.call(SOAP_ACTION, envelope);
				httpTranstation.call(SOAP_ACTION, envelope); 
				detail = (SoapPrimitive) envelope.getResponse();
				TextConten.setText(detail.toString()); 
			} catch (IOException e) {
				// TODO Auto-generated catch block
				//e.printStackTrace();
				Log.e(this.toString(),e.toString());
				 //Toast.makeText(WebserviceTestActivity.this,
				 	//	"文件流错误" + e.toString(), Toast.LENGTH_LONG);
			} catch (XmlPullParserException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				//Toast.makeText(WebserviceTestActivity.this,
				//		"XML文件流错误" + e.toString(), Toast.LENGTH_LONG);
			} catch (Exception e) {
				// TODO: handle exception
				//Toast.makeText(WebserviceTestActivity.this,
				//		"错误" + e.toString(), Toast.LENGTH_LONG);
				Log.e(this.toString(),e.toString());
			}
		}
	};

 

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <CompanyToken xmlns="http://tempuri.org/">
      <CompanyKey>string</CompanyKey>
    </CompanyToken>
  </soap:Header>
  <soap:Body>
    <GetComapnyXML xmlns="http://tempuri.org/">
      <StartCount>string</StartCount>
      <EndCount>string</EndCount>
      <jobCount>string</jobCount>
    </GetComapnyXML>
  </soap:Body>
</soap:Envelope>

  

首先下载 http://code.google.com/p/ksoap2-android/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+ReleaseDate+Size+DownloadCount

ksoap2-android-assembly-2.4-jar-with-dependencies.jar

 右键项目 属性 -->java build path-->Libraries添加jar包

一定要记得在AndroidManifest.xml文件是加入访问外网权限 

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

posted on 2012-02-06 16:36  freexiaoyu  阅读(1161)  评论(0编辑  收藏  举报