socket调用websercvice

交谈中请勿轻信汇款、中奖信息、陌生电话,勿使用外挂软件。

☆蓝蓝心情★(357079649)  10:25:41
等下我给你讲下,hack下载一个soapui先
JAVA_老潘(654821093)  10:34:19
什么时候讲阿
☆蓝蓝心情★(357079649)  10:35:48
11:00
JAVA_老潘(654821093)  10:37:34
你在哪讲阿
QQ?
还是yy 还是
☆蓝蓝心情★(357079649)  10:37:56
QQ
JAVA_老潘(654821093)  10:42:24

快到时间了
怎么讲阿 语音吗 还是
☆蓝蓝心情★(357079649)  10:48:35
QQ
打字
☆蓝蓝心情★(357079649)  10:55:53
hack不在?
小黑哥(1377252306)  10:56:40

☆蓝蓝心情★(357079649)  11:02:35
时间到了
比如,现在通过socket 调用一个手机号码来源地查询的webservice(http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl), 我做一个详细讲解, hack2003回头自己看下,解决自己的问题
☆蓝蓝心情★(357079649)  11:06:43
换一个webservice服务, 这个查号码的需要用户ID,我无法提供,  换为:
http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
QQ号码是否在线查询服务
JAVA_老潘(654821093)  11:16:37
这个还是webservice接口阿  那用socket怎么调你这个阿
☆蓝蓝心情★(357079649)  11:17:06
我就是在给你们将这个
等下,做一个demo出来,5分钟

JAVA_老潘(654821093)  11:17:35
嗯 
☆蓝蓝心情★(357079649)  11:29:43
package cn.mc.arch.demo;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class SoapDemo {

/**
* *
*
* @param args
*/
public static void main(String[] args) throws Exception {
Socket socket = new Socket("webservice.webxml.com.cn", 80);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));

out
.println("POST http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx HTTP/1.1");
out.println("Accept-Encoding: gzip,deflate");
out.println("Content-Type:text/xml;charset=UTF-8");
out.println("SOAPAction: \"http://WebXml.com.cn/qqCheckOnline\"");
out.println("Host: webservice.webxml.com.cn");
out.println("Connection: Keep-Alive");
out.println("User-Agent: mclaren-test");

StringBuffer buffer = new StringBuffer();

buffer
.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://WebXml.com.cn/\">");
buffer.append("<soapenv:Header/>");
buffer.append("<soapenv:Body>");
buffer.append("<web:qqCheckOnline>");
buffer.append("<web:qqCode>641069519</web:qqCode>");
buffer.append("</web:qqCheckOnline>");
buffer.append("</soapenv:Body>");
buffer.append("</soapenv:Envelope>");

String body = buffer.toString();

out.println("Content-Length: " + body.getBytes().length);
out.println();

out.println(body);

StringBuffer response = new StringBuffer();
char[] buf = new char[128];
do {
// clear buffer
for (int i = 0; i < buf.length; i++) {
buf[i] = 0;
}

int rt = in.read(buf);

String s = new String(buf);
response.append(s);

if (rt < 128) {
break;
}
} while (true);

in.close();
out.close();
socket.close();

System.out.println("Response is " + response);
}
}

注意这个demo, 按照soap协议,发起请求
响应截图

HTTP/1.1 200 OK
Date: Fri, 05 Apr 2013 03:29:30 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 367

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><qqCheckOnlineResponse xmlns="http://WebXml.com.cn/"><qqCheckOnlineResult>N</qqCheckOnlineResult></qqCheckOnlineResponse></soap:Body></soap:Envelope>
☆蓝蓝心情★(357079649)  11:30:51
这是完整的响应体,大家可以发现这个QQ的在线状态为 N

☆蓝蓝心情★(357079649)  11:31:52

用老潘的QQ号试试,结果为:

老潘应该是隐身了
JAVA_老潘(654821093)  11:33:01

我在测呢
☆蓝蓝心情★(357079649)  11:33:28
换成我自己的QQ,则是:

JAVA_老潘(654821093)  11:34:40
你发的图在我这全破了
☆蓝蓝心情★ 分享文件 11:35:14
"ws.rar" 下载
JAVA_老潘(654821093)  11:35:24
这个牛B
☆蓝蓝心情★(357079649)  11:35:25
代码demo,群共享ws.rar
JAVA_老潘(654821093)  11:35:35
我想看谁在线 直接运行这个
☆蓝蓝心情★(357079649)  11:35:39
下载到本地研究
JAVA_老潘(654821093)  11:35:42
 
嗯我刚刚测试了
没问题
☆蓝蓝心情★(357079649)  11:36:02
ok
JAVA_老潘(654821093)  11:36:10

☆蓝蓝心情★(357079649)  11:36:42
socket是一切应用协议的基础,不要把它和soap、rmi、http等认为是两码事,没有socket做底层通信,它们都无用武之地
JAVA_老潘(654821093)  11:37:28
rmi是远程序调用 我没弄过这个
蓝蓝有demo吗
☆蓝蓝心情★(357079649)  11:38:11
RMI你把它当作一个概念就好
无需当成具体的技术,和webservice一样
JAVA_老潘(654821093)  11:38:26
好像没有socket这么方便测试阿

☆蓝蓝心情★(357079649)  11:38:38
只要自己愿意,可以以任何技术方式,实现RMI
JAVA_老潘(654821093)  11:41:28
那个webservice是腾讯发布的吧
☆蓝蓝心情★(357079649)  11:41:57
不晓得是哪里的,我为给你们做demo,随便在网上找的
JAVA_老潘(654821093)  11:42:24


☆蓝蓝心情★(357079649)  11:44:20
这几天抽空给大家讲下hadoop
JAVA_老潘(654821093)  11:44:20
为什么我本地ping不通那个地址呢
☆蓝蓝心情★(357079649)  11:44:36
不给ping不一定是连不上
服务器一般都会做禁止ping的设置的
JAVA_老潘(654821093)  11:45:03
哦  明白了
☆蓝蓝心情★(357079649)  11:47:02
对于对hadoop有兴趣的同学,请申请一个 VPN,我们可以成立一个技术小组, 利用大家各自的机器,通过VPN网络搭建一个hadoop集群,供自己和群社区进行hadoop研究
JAVA_老潘(654821093)  11:48:55
嗯 今天大家都出去玩了应该



交谈中请勿轻信汇款、中奖信息、陌生电话,勿使用外挂软件。

骇客2003(121003923) 2013/4/5 15:49:25
我想了解
socket和websevice对接
☆蓝蓝心情★(357079649) 2013/4/5 15:53:09
看demo
骇客2003(121003923) 2013/4/5 15:53:17
在哪?
ws.rar?
骇客2003(121003923) 2013/4/5 15:54:08
前天c和http通过socket对url对接
大概让我懂的
sockets是系统层面的
☆蓝蓝心情★(357079649) 2013/4/5 15:55:07

骇客2003(121003923) 2013/4/5 15:56:04

看到了.果然和我想的一样
只需要在发送的时候,将头协议加上去
和http一样呀
☆蓝蓝心情★(357079649) 2013/4/5 15:56:25
是不是你想要的东西?
骇客2003(121003923) 2013/4/5 15:56:31
是呀
☆蓝蓝心情★(357079649) 2013/4/5 15:56:36
SOAP就是基于HTTP的包装
好,对你有帮助就好
骇客2003(121003923) 2013/4/5 15:56:53
http是基于sockets的吗?
你里面的soap协议换成http.就支持sockets和http通信了
JAVA_老潘(654821093) 2013/4/5 15:57:36
蓝蓝把wsdl给封装了
然后post
☆蓝蓝心情★(357079649) 2013/4/5 15:57:43
不用wsdl了
wsdl只是帮助我们分析接口信息
JAVA_老潘(654821093) 2013/4/5 15:58:09
post很关键吧
骇客2003(121003923) 2013/4/5 15:59:20

JAVA_老潘(654821093) 2013/4/5 15:59:58
按这样说soap 是不是属于http协议的子集呢
骇客2003(121003923) 2013/4/5 16:00:30
不是
二种不一样的
骇客2003(121003923) 2013/4/5 16:00:45
但都尊循sockets协议
http/webservice都尊循sockets进行开发的
但我不知道,系统的网络通迅是不是只支持sockets
JAVA_老潘(654821093) 2013/4/5 16:02:32
我还搞不明白soap和http的关系
骇客2003(121003923) 2013/4/5 16:02:54
二者都是协议
没啥关系
JAVA_老潘(654821093) 2013/4/5 16:03:07

骇客2003(121003923) 2013/4/5 16:08:31
蓝蓝
☆蓝蓝心情★(357079649) 2013/4/5 16:08:42

骇客2003(121003923) 2013/4/5 16:08:57
soap是不是只需要你上面的协议头
JAVA_老潘(654821093) 2013/4/5 16:09:01
蓝蓝
骇客2003(121003923) 2013/4/5 16:09:08
内容的xml可以根据情况来定?
骇客2003(121003923) 2013/4/5 16:09:50
soapenv:Envelope这个开头和结束
soapenv:Envelope这个可以随便定义吗?只要尊循我自已的一些定义?
☆蓝蓝心情★(357079649) 2013/4/5 16:10:35
soapenv:Evnelope是规范
是soap body的规范
骇客2003(121003923) 2013/4/5 16:11:19
soap body里面的xml可以自定义,其它的都是协议规范格式,必须带的?
☆蓝蓝心情★(357079649) 2013/4/5 16:11:32
是的
骇客2003(121003923) 2013/4/5 16:12:09
wsdl应该是规范的是body里面的xml吧?
☆蓝蓝心情★(357079649) 2013/4/5 16:13:05
这样,这个我先不给你说
你自己去查看下soap specification
你需要系统地了解soap,而不是局部
JAVA_老潘(654821093) 2013/4/5 16:13:52
我也不懂soap
骇客2003(121003923) 2013/4/5 16:14:12
低层是c,要把c程序烧入到设备上的
☆蓝蓝心情★(357079649) 2013/4/5 16:14:13
做了多年的webservice开发,很多人仍然是看不懂wsdl的,这是一个严重的问题。  我建议大家系统地对soap(也包括其他的工业技术)进行学习
骇客2003(121003923) 2013/4/5 16:14:33
他们是不支持 webservice,但可以用sockets
如果要通信,需要了解的是不是很多
骇客2003(121003923) 2013/4/5 16:16:06
我老板写C的.当时我说sockets只需要尊循soap协议通信,就可以和我上面的webservice进行对接操作了
☆蓝蓝心情★(357079649) 2013/4/5 16:17:06
你老板是对的
JAVA_老潘(654821093) 2013/4/5 16:17:52
我怎么总觉得webservice没必须搞得那么复杂
只用一些简单的功能就能够满足需求了呢
骇客2003(121003923) 2013/4/5 16:18:07
我老板不懂.是我说的
骇客2003(121003923) 2013/4/5 16:18:42
但我不知道协议本身要放那些值进行调用和传送
他的c主要做的就是内存的处理.大部分是二进制传送
yangcq(526896071) 2013/4/5 16:19:18
截取协议包看看数据结构
骇客2003(121003923) 2013/4/5 16:19:28
怎么截
yangcq(526896071) 2013/4/5 16:20:14
下载软件
yangcq(526896071) 2013/4/5 16:21:54
清明大家都没回家吗
JAVA_老潘(654821093) 2013/4/5 16:22:08
我在图书馆
不回
yangcq(526896071) 2013/4/5 16:23:04
没带电脑回家- -
yangcq(526896071) 2013/4/5 16:23:08
好无聊
骇客2003(121003923) 2013/4/5 16:24:35

可以回家是很幸福的
yangcq(526896071) 2013/4/5 16:25:18
老家这边下雨
天天也是宅在家里
JAVA_老潘(654821093) 2013/4/5 16:25:42
好像清明节10年有9年下雨
至少
骇客2003(121003923) 2013/4/5 16:26:01
春季
骇客2003(121003923) 2013/4/5 16:30:58
wsdl
是真心看不懂
只能看个大概
骇客2003(121003923) 2013/4/5 16:32:06
<wsdl:message name="getAttRecResponse">
<wsdl:part name="getAttRecReturn" type="xsd:string"></wsdl:part>
</wsdl:message>
返回string类型的值
<wsdl:message name="getAttRecRequest">
<wsdl:part name="date" type="xsd:string"></wsdl:part>
<wsdl:part name="pageNum" type="xsd:int"></wsdl:part>
<wsdl:part name="pageSize" type="xsd:int"></wsdl:part>
</wsdl:message>
传三个参数
<wsdl:portType name="YunDaSOA">
<wsdl:operation name="getAttRec" parameterOrder="date pageNum pageSize">
<wsdl:input message="impl:getAttRecRequest" name="getAttRecRequest"></wsdl:input>
<wsdl:output message="impl:getAttRecResponse" name="getAttRecResponse"></wsdl:output>
</wsdl:operation>
</wsdl:portType>
骇客2003(121003923) 2013/4/5 16:33:20
方法支持读和写以及方法,参数,对应类
yangcq(526896071) 2013/4/5 16:33:29
嗯 根据wsdl文档生成代码
骇客2003(121003923) 2013/4/5 16:33:44
wsdl:binding 就看不懂了
骇客2003(121003923) 2013/4/5 17:25:32

猜你喜欢

转载自1377252306.iteye.com/blog/1842199
今日推荐