Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询
来源:互联网 发布:什么是数据转换 编辑:程序博客网 时间:2024/06/10 22:28
创建android工程MobileBelong,设置网络访问权限。
资源
<string name="hello">Hello World, MainActivity!</string> <string name="app_name">手机号归属地查询</string> <string name="mobile">手机号</string> <string name="button">查询</string> <string name="error">网络连接失败</string>
布局
TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/mobile" /> <EditText android:id="@+id/mobile" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="13472283596" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" /> <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="wrap_content" />
在src目录下创建mobilesoap.xml,并将网址文档中提供的代码复制其中,如下
<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <getMobileCodeInfo xmlns="http://WebXml.com.cn/"> <mobileCode>$mobile</mobileCode> <userID></userID> </getMobileCodeInfo> </soap12:Body></soap12:Envelope>
业务类:MobileService
注意访问目标地址是:
http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx
可以有协议中得到。
package cn.class3g.service;…public class MobileService {public static String getMobileAddress(String mobile) throws Exception {InputStream inStream = MobileService.class.getClassLoader().getResourceAsStream("mobilesoap.xml");byte[] data = StreamTool.readInputStream(inStream);String xml = new String(data);String soap = xml.replaceAll("\\$mobile", mobile);/** * 正则表达式$为特殊正则中的特殊符号须转义,即\$mobile * 而\为字符串中的特殊符号,所以用两个反斜杠,即"\\{1}quot; */String path = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";data = soap.getBytes();// 得到了xml的实体数据URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5 * 1000);conn.setRequestMethod("POST");conn.setDoOutput(true);conn.setRequestProperty("Content-Type","application/soap+xml; charset=utf-8");conn.setRequestProperty("Content-Length", String.valueOf(data.length));OutputStream outStream = conn.getOutputStream();outStream.write(data);outStream.flush();outStream.close();if (conn.getResponseCode() == 200) {InputStream responseStream = conn.getInputStream();return parseXML(responseStream);}return null;}/** * 解析返回xml数据 * * @param responseStream * @return * @throws Exception */private static String parseXML(InputStream responseStream) throws Exception {XmlPullParser parser = Xml.newPullParser();parser.setInput(responseStream, "UTF-8");int event = parser.getEventType();while (event != XmlPullParser.END_DOCUMENT) {switch (event) {case XmlPullParser.START_TAG:if ("getMobileCodeInfoResult".equals(parser.getName())) {return parser.nextText();}break;}event = parser.next();}return null;}}
工具类StreamTool
package cn.class3g.utils;…public class StreamTool {/** * 从输入流读取数据 * @param inStream * @return * @throws Exception */public static byte[] readInputStream(InputStream inStream) throws Exception{ByteArrayOutputStream outSteam = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while( (len = inStream.read(buffer)) !=-1 ){outSteam.write(buffer, 0, len);}outSteam.close();inStream.close();return outSteam.toByteArray();}}Activity类MobileBelongActivitypackage cn.class3g.mobile;…public class MobileBelongActivity extends Activity {private static final String TAG = "MainActivity";private EditText mobileText;private TextView resultView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mobileText = (EditText) this.findViewById(R.id.mobile);resultView = (TextView) this.findViewById(R.id.result);Button button = (Button) this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String mobile = mobileText.getText().toString();try {String address = MobileService.getMobileAddress(mobile);resultView.setText(address);} catch (Exception e) {Log.e(TAG, e.toString());Toast.makeText(MobileBelongActivity.this, R.string.error, 1).show();}}});}}
- Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询
- Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询
- Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询
- android----发送soap数据给服务器调用webservice,实现手机归属地查询
- Android学习笔记---29_构建soap协议内容,发送xml数据和调用webservice,手机号码归属地查询器
- 调用webservice查询手机号归属地
- android Webservice 手机号归属地查询
- SOAP webService关于查询手机号归属地的运用
- android之使用Soap协议调用webservice实现手机归属地查询
- Android调用webservice实现 手机号码归属地查询
- android 调用webservice实现手机号码归属地查询
- Android调用Webservice实现手机号码归属地查询
- 简单的 Android 调用WebService 实现号码归属地查询
- 根据手机号查询数据归属地
- 手机号归属地查询
- 查询手机号归属地
- java学习笔记之webservice(五)--实现手机号归属地的WebService调用
- android调用webservice实现手机归属查询
- JAVA 上加密算法的实现用例
- Eclipse导出jar包含有第三方的jar包
- JDBC ---- 会话跟踪
- [网站扫描]Nikto
- 合并排序(归并排序)
- Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询
- asp.net对一个请求的处理流程
- vmware中3台虚拟机ping不通
- MD5算法 判断字符为中文
- QT与maya mel
- 穿过已知点画平滑曲线(3次贝塞尔曲线)
- C/C++中,数组名和指针的区别
- 另一种实用的接入erlang控制台的方法
- android 通过HTTP协议发送XML数据并调用