展会信息港展会大全

Android开发之查询QQ是否在线
来源:互联网   发布日期:2016-01-14 11:24:26   浏览:2056次  

导读:这个小程序的主要原理是通过HTTP协议发送XML数据并调用webservice,分析返回的数据来进行Android查询QQ是否在线。Web Service(WEB服务)能够快捷和方便地综合并结合各种系统、商务和任何应用平台。新出现的 W......

这个小程序的主要原理是通过HTTP协议发送XML数据并调用webservice,分析返回的数据来进行Android查询QQ是否在线。

Web Service(WEB服务)能够快捷和方便地综合并结合各种系统、商务和任何应用平台。新出现的 Web Services 标准: SOAP、WSDL 和 UDDI 能够使任何系统和系统之间的应用变为更加方便和廉价。

Web服务(Web Services)和Service Oriented Architecture作为实现分布式系统和履行公司内部、公司之间的应用整合的技术和架构出现。SOA和Web服务的体系结构是两个不同层面的问题,前者是概念模式,面向商业应用;后者则是实现模式,面向技术框架。

面向服务的体系结构所表示的是一个概念上的模型,在这个模型中,松散耦合的应用在网络上被描述、发布和调用。而Web服务则是一组由协议构成的协议栈所定义的框架结构,它定义了在不同的系统之间通信松散耦合的编程框架。也可以认为,Web服务体系结构实际上是面向服务的体系结构的一个特定实现;面向服务的体系结构作为一个概念上的模型,将网络、传输协议以及安全等具体的细节都遗留给特定的实现。Web服务中的SOAP,WSDL等都是具体实现细节的标准。

首先写出布局

<?xml version="1.0"encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/qq" />

<EditText

android:id="@+id/qqID"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="296463139" />

<Button

android:id="@+id/buttonID"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/button" />

<TextView

android:id="@+id/resultID"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

</LinearLayout>

然后建立web服务的xml,qqstatus.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>

<qqCheckOnline xmlns="http://WebXml.com.cn/" >

<qqCode>$qq</qqCode>

</qqCheckOnline>

</soap12:Body>

</soap12:Envelope>

Service方法

package cn.class3g.service;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;

import cn.class3g.utils.StreamTool;

public class QQService {

public static String getQQstatus(String qq) throws Exception {

InputStream inStream = QQService.class.getClassLoader()

.getResourceAsStream("qqstatus.xml");

byte[] data = StreamTool.readInputStream(inStream);

String xml = new String(data, "UTF-8");

String soapEntity = xml.replaceAll("\\$qq", qq);

data = soapEntity.getBytes();

String path = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setDoOutput(true);

conn.setConnectTimeout(5000);

conn.setRequestMethod("POST");

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 pareseXml(responseStream);

}

return null;

}

private static String pareseXml(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 ("qqCheckOnlineResult".equals(parser.getName())) {

return parser.nextText();

}

break;

}

event = parser.next();

}

return null;

}

}

Activity

package cn.class3g.qq;

import cn.class3g.service.QQService;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

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;

public class QqStatusActivityextends Activity implements OnClickListener {

Button submitBtn;

EditText qqET;

TextView resultTV;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

findViews();

}

private void findViews() {

submitBtn = (Button) this.findViewById(R.id.buttonID);

qqET = (EditText) this.findViewById(R.id.qqID);

resultTV = (TextView) this.findViewById(R.id.resultID);

submitBtn.setOnClickListener(this);

}

public void onClick(View v) {

String qqNumber = qqET.getText().toString().trim();

if (!"".equals(qqNumber)) {

try {

String result = QQService.getQQstatus(qqNumber);

System.out.println(result.toString());

if (result.equals("Y")) {

resultTV.setText("在线");

} else if (result.equals("N")) {

resultTV.setText("不在线");

}

} catch (Exception e) {

Log.e("tag", e.toString());

Toast.makeText(this, R.string.error, Toast.LENGTH_LONG).show();

}

}

}

}

赞助本站

人工智能实验室

相关热词: 查询 QQ 在线

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港