WebService,相当于是一个服务器,我们给按照它指定的API(已经定义好的方法)给它发送文件,它按照我们指定的内容,同时使用API给我们回传数据。
手机 xml 服务器(通过中间的xml,他们两个进行通信)
一般情况都是我们按照服务器规定的格式(API),向服务器传送数据,作为请求,然后服务器根据我们的请求就可以给我们回传一个XML,我们所请求的数据就包括在这个xml里面,我们通过使用PULL等解析就可以拿到我们所想要的数据,当然,你也可以不解析,直接作为一个String打印出来。
一般我们采用的服务器网址是webxml,下面我们将模拟向webxml发送一条请求,获取相应的号码归属地。
1、 http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo进入这个网址,我们可以看到一些列的类似于xml文件的东西,那就是教我们怎么所需要的xml文件。
2、 首先我们找到我们要发送给服务器的数据,当然,发送给服务器的方式有两种,因为GET得局限性比较大,我们这就列举使用post给服务器发送webservice请求,当然,上面有两个,我们肯定选择最新的。
3、 参数设置 POST /WebServices/MobileCodeWS.asmx HTTP/1.1 Host: webservice.webxml.com.cn Content-Type: application/soap+xml; charset=utf-8 Content-Length: length 蓝色字体部分表示是需要后期处理的内容,而它给我们提供的包括主机名和文件名,我们在前面加个http:// webservice.webxml.com.cn / WebServices/MobileCodeWS.asmx就可以得到一个URL,注意URL不要写错了,不然就会告诉你找不到那个网页,而它的文本内容也要特别注意,它是soap(肥皂协议),是按照肥皂协议来传递xml的 |
4、正式内容 <?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>string</mobileCode> <userID>string</userID> </getMobileCodeInfo> </soap12:Body> </soap12:Envelope> 这一段内容你可以放在一个xml文件中,可以先通过inputstram从文件中读取,然后传递那个inputstream,一般都是传递inputstream的,如果你想直接用一个Strng来装,那么你应该特别注意一下斜杠 蓝色字体同样是值得注意的,mobilecode这个表示手机号码,是需要你输入的,如果你想在使用的时候再输入,你的使用一个特殊一点的字符,不要跟里面的其他字符一样,这样好方便后面的替换,当然你可以使用#mobile,这样包含特殊字符的时候特别注意使用String.replace方法时不要选择replaceall,因为对于replaceall来说,它是区分特殊字符的,也就是说你还在前面加两个斜杠,第一个斜杠是给第二个斜杠转移的,第二个斜杠是给特殊字符转移的,所以如果你使用了特殊字符,推荐使用replace。 在你发送这段的内容的时候是需要指明数据长度,你的先将内容#mobile替换之后再统计长度,那个长度才是真正的长度,不然可能引起永久等待,超时等错误。 |
使用httpurlconnetion.getinputstream,我们可以获得一个输入流,在这个输入流中就包含了我们送需要的内容,我们可以定义一个pull进行解析,当然你也可以直接打印,直接打印的话的注意编码方式,防止出现乱码,webxml默认传递的是UTF-8的格式,如果你是采用pull进行解析的话,那么你该注意,在匹配pullparse.getname的时候,一定的是判断这个是start-tag才可以,不然会给你报空指针异常。
这样我们就实现了webservice之间的数据传递,同时通过那个网页,我们可以获取天气、股票、单词等信息