如何用SOCKER获得WEB SERVCE信息。

muwesky 2009-12-30 03:26:31

小弟想用SOCKET连接一个webservce服务的网站,获取信息。但连接之后,就不知道怎么去获取信息了。还请各位指点一下。

网站提供方法如下:

第一种:
GET /WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=string HTTP/1.1
Host: webservice.webxml.com.cn



第二种:
POST /WebServices/WeatherWebService.asmx/getSupportCity HTTP/1.1
Host: webservice.webxml.com.cn
Content-Type: application/x-www-form-urlencoded
Content-Length: length

在此先谢谢各位大虾了!!
...全文
1853 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rfsmby 2010-02-04
  • 打赏
  • 举报
回复
int ah_http_session_form_req_get(struct ah_http_session *session, kal_uint8 *url, kal_uint8 *req_buf, kal_uint32*buf_len)
{
char CRLF[3] = {0x0d, 0x0a, 0x00};
int send_len=0;
assert(session);
assert(url && strlen((char *)url));
assert(req_buf);
assert(buf_len && *buf_len > 0);
tlog("ah_http_session_form_req_get with session%d, url%s buflen %d", session, url, *buf_len);
memset((char*)session->ptrans->sendbuf, 0, AH_MAX_SENDBUF_SIZE);
strcat((char *)session->ptrans->sendbuf, http_request_type);
send_len+=strlen(http_request_type);
strcat((char *)session->ptrans->sendbuf, (char *)url);
send_len+= strlen((char *)url);
strcat((char *)session->ptrans->sendbuf, " ");
send_len+= 1;
strcat((char *)session->ptrans->sendbuf, "HTTP/1.1");
send_len+=8;
strcat((char *)session->ptrans->sendbuf, CRLF);
send_len+=2;
strcat((char *)session->ptrans->sendbuf, "Host: 10.0.0.172:80");
send_len+=19;
strcat((char *)session->ptrans->sendbuf, CRLF);
send_len+=2;
strcat((char *)session->ptrans->sendbuf, "User-Agent: */*");
send_len+=15;
strcat((char *)session->ptrans->sendbuf, CRLF);
send_len+=2;
strcat((char *)session->ptrans->sendbuf, "Accept: */*");
send_len+=11;
strcat((char *)session->ptrans->sendbuf, CRLF);
send_len+=2;
strcat((char *)session->ptrans->sendbuf, "Accept-Charset: US-ASCII, ISO-8859-1, UNICODE");
send_len+=strlen("Accept-Charset: US-ASCII, ISO-8859-1, UNICODE");
strcat((char *)session->ptrans->sendbuf, CRLF);
send_len+=2;
strcat((char *)session->ptrans->sendbuf, "X-Online-Host: ");
send_len+=15;
//strcat((char *)session->ptrans->sendbuf, "144.214.37.41");
strcat((char *)session->ptrans->sendbuf, (char *)session->hostname);
send_len+= strlen((char *)session->hostname);
//send_len+= strlen("144.214.37.41");
strcat((char *)session->ptrans->sendbuf, CRLF);
send_len+=2;
strcat((char *)session->ptrans->sendbuf, "Connection: Keep-Alive");
send_len+=22;
strcat((char *)session->ptrans->sendbuf, CRLF);
send_len+=2;
strcat((char *)session->ptrans->sendbuf, CRLF);
send_len+=2;

rlog("ah_http_session_form_req_get: req-content[%s]", session->ptrans->sendbuf);
*buf_len = send_len;
session->req_len = send_len;
session->state = STATE_REQ_FORMED;
return send_len;
}
儿大不由爷 2010-02-04
  • 打赏
  • 举报
回复
webservice是基于HTTP协议的,先用socket封装HTTP(POST)接口吧,
babiq 2010-01-12
  • 打赏
  • 举报
回复
如果你想用SOCKET接口去做,需要你自己实现一个简单的HTTP协议栈。当然,这和BREW就没有关系了因为BREW已经实现了IWEB接口。
muwesky 2010-01-05
  • 打赏
  • 举报
回复
继续等待。。。。。。
muwesky 2009-12-31
  • 打赏
  • 举报
回复
谢谢楼上的回答。IWeb接口我已经试过,可以正常使用。我主要是想用SOCKET试一下。

还有暂时我还不想用SOPA方式去获取XML信息,因为用HTTP也可以,XML数据解析我这边自己会做,所以没有问题。

现在的问题是,我想去向服务器发信息,获取XML信息,网站也提供了两种方式,分别是GET和POST的方式;但我不知道怎么去组织他们,然后发给服务器。

首先我会用ISOCKET_Connect 去连接webservice.webxml.com.cn,可以成功,之后就需要向服务器WRITE,发出请求,但是请求的格式怎么写呢?
也就是ISOCKET_Write (ISocket * pISocket, byte * pBuffer, uint32 wBytes ) 中,pBuffer的数据应该怎么组织呢?我看了一些HTTP的协议,但还是不清楚怎么写。所以希望知道的人提供一些建议。


alex_goacross 2009-12-30
  • 打赏
  • 举报
回复
首先确定你请求的数据组织方式。通常会采用soap的方式。。
1.Applet端取得网络连接。定义好你的请求格式(一般是以XML的形式)填充好请求的数据,及sopa action等信息。如果有中文字符的话。需要做Encode。。
2.Webservice 端,得到Applet的请求后,根据你的request method 在applet制定的namespace空间找到匹配的方法,调用之(这需要你去或者web service端实现的)。而后返回Applet期待的数据(xml)格式。
3.applet要收到Web service的Response,如楼上所说的,需要callback帮忙,同时需要IResource_xxx函数。。同时要做xml的解析工作,Decode(你需要自己实现)。。应为Web service给你的Response是xml string。通过xml中的节点数据,提取你需要的节点内容。。
一个完整的Request -> Response 过程大致是这样的。。。
kaka_vip_2008 2009-12-30
  • 打赏
  • 举报
回复
建议用 IWeb去连接和获取数据,包括后续和服务端的交互

客户端用CALLBACK_Init(&pMe->web.Call_Back_Structure,Receive_WebResponse,pMe);

连接成功后在注册的回调函数Receive_WebResponse获取数据

2,851

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧