Android本身没有集成访问webservice的相关api,需要我们引用第三方的包,现在一般用的是ksoap2.jar这个包,大小不足200K,非常轻量级,点击此处下载jar包。使用时将jar包放进android项目的libs文件中即可。 下面是使用ksoap2获取电话号码地区的一个简单例子:
package com.yeetrack.mynumberquery;
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;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
/**
*
* @author youthflies
* 使用ksoap2 访问webservice 获取手机号码地区
*/
public class MainActivity extends Activity
{
private EditText inputText;
private Button submitButton;
private TextView resultView;
private String phoneCode;
private Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
Bundle bundle = msg.getData();
String result = bundle.getString("result");
if(result != null)
resultView.setText(result);
}
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputText = (EditText)findViewById(R.id.numInputId);
submitButton = (Button)findViewById(R.id.queryButtonId);
resultView = (TextView)findViewById(R.id.resultId);
OnClickListener onClickListener = new OnClickListener()
{
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.queryButtonId:
phoneCode = inputText.getText().toString().trim();
//简单过滤一下
if(!phoneCode.matches("\\d{11}"))
Toast.makeText(MainActivity.this, "电话格式不对", Toast.LENGTH_LONG).show();
else
{
resultView.setText("加载中...");
new Thread(runnable).start();
}
break;
}
}
};
submitButton.setOnClickListener(onClickListener);
}
//android主线程中现在不允许有阻塞动作存在,耗费时间的请求要放在子线程中
Runnable runnable = new Runnable()
{
@Override
public void run()
{
String namespace = "http://WebXml.com.cn/";
String methodName = "getMobileCodeInfo";
String endPoint = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
String soapAcion = "http://WebXml.com.cn/getMobileCodeInfo";
//指定webservice的命名空间和调用的方法
SoapObject soapObject = new SoapObject(namespace, methodName);
//添加需要的参数
soapObject.addProperty("mobileCode", phoneCode);
soapObject.addProperty("userID", "");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.setOutputSoapObject(soapObject);
envelope.dotNet = true;
//HttpTransportSE A J2SE based HttpTransport layer.
HttpTransportSE transportSE = new HttpTransportSE(endPoint);
try
{
transportSE.call(soapAcion, envelope);
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//读取结果
SoapObject object = (SoapObject)envelope.bodyIn;
String result = object.getProperty(0).toString();
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putString("result", result);
msg.setData(bundle);
handler.sendMessage(msg);
}
};
}
转载请保留链接地址: https://www.yeetrack.com/?p=662
近期评论