首页
社区
课程
招聘
[求助]请问如何在win32汇编中实现向某网页提交POST请求,并返回结果。
发表于: 2008-11-10 23:36 5271

[求助]请问如何在win32汇编中实现向某网页提交POST请求,并返回结果。

2008-11-10 23:36
5271
请问如何在win32汇编中实现向某网页提交POST请求,并返回结果。
谢谢!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 424
活跃值: (1829)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
Google -> "WinHTTP"
2008-11-11 08:23
0
雪    币: 253
活跃值: (169)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那个兄弟可以把winhttp.inc和lib打个包给我?不想去下PlatformSDK太大了啊。。。谢谢
2008-11-11 11:07
0
雪    币: 253
活跃值: (169)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
先用wininet试了下
	mov	uc.dwStructSize,sizeof uc
	lea eax,host
	mov	uc.lpszHostName,eax
	mov	uc.dwHostNameLength,sizeof host
	lea eax,path
	mov	uc.lpszUrlPath,eax
	mov	uc.dwUrlPathLength,sizeof path
	lea eax,extra
	mov	uc.lpszExtraInfo,eax
	mov	uc.dwExtraInfoLength,sizeof extra
	invoke	InternetCrackUrl,addr Url, 0, ICU_ESCAPE, addr uc
	invoke	InternetOpen,CTXT("TEST"),INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0
	mov	hSession,eax
	invoke	gethostbyname,addr host
	mov	eax,[eax+12]
	mov	eax,[eax]
	mov	eax,[eax]
	invoke	inet_ntoa,eax
	invoke	InternetConnect,hSession,eax, addr uc.nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0
	mov	hConnect,eax
	mov	flags,0
	invoke	HttpOpenRequest,hConnect,CTXT("POST"), addr path, NULL, NULL, NULL, flags, 0
	mov hRequest,eax
	invoke	lstrlen,addr strHeader
	invoke	HttpAddRequestHeaders,hRequest,addr strHeader, eax, HTTP_ADDREQ_FLAG_ADD
	invoke	lstrlen,addr strPostData
	invoke	HttpSendRequest,hRequest, 0, 0,addr strPostData, eax


现在就是一到 HttpSendRequest 就无响应了,(好像很久才有反应)前面都正常,谁能说说是怎么回事?
2008-11-11 14:48
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
5
自己构造http包 然后send吧
2008-11-11 19:08
0
雪    币: 253
活跃值: (169)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你的意思难道是这种方式不行?
2008-11-11 20:22
0
雪    币: 315
活跃值: (23)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
7
;        Post Data to URL
proc  PostData lpszHeader, szMethod, lpszFromData, szHostName, szFormAction
                       
                        pushad
                       
                        i                InternetOpen, esi, esi, esi, esi, esi = 0
                       
                        test        eax, eax
                       
                        je                .OverSession
                       
                        xchg        eax, ebx                                 ;ebx = hSession
                       
                        i                InternetConnect, ebx, [szHostName], INTERNET_DEFAULT_HTTP_PORT, esi, esi, INTERNET_SERVICE_HTTP, esi, esi
                       
                        xchg        eax, edi
                       
                        test        edi, edi
                       
                        je                .Over                                         ;edi = hConnect
                       
                        i                HttpOpenRequest, edi, [szMethod],         [szFormAction], 'HTTP/1.1', esi, esi, esi, esi
                       
                        test        eax, eax
                       
                        je                .Over
                       
                        xchg        eax, esi
                       
                        i                lstrlen, [lpszFromData]       
                       
                        i                HttpSendRequest, esi, [lpszHeader], -1, [lpszFromData], eax
                               
                .Over:
                       
                        i                InternetCloseHandle, edi
               
                .OverSession:
               
                        i                InternetCloseHandle, ebx
                       
                        popad
                       
                        ret
        endp
2008-11-12 14:27
0
雪    币: 253
活跃值: (169)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
自己解决了,还是我那个代码不过有个地方写错了改成这样就可以了

	invoke	InternetOpen,CTXT("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"),INTERNET_OPEN_TYPE_PRECONFIG,NULL,INTERNET_INVALID_PORT_NUMBER,0
	mov	hSession,eax
	invoke	InternetConnect,hSession,addr host, INTERNET_INVALID_PORT_NUMBER, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0
	mov	hConnect,eax
	mov	flags,0
	invoke	HttpOpenRequest,hConnect,CTXT("POST"), addr fpath, NULL, NULL, NULL, flags, 0
	mov hRequest,eax
	lea ebx,strHeader
	$ahloop:
	invoke	lstrlen,ebx
	invoke	HttpAddRequestHeaders,hRequest,ebx, eax, HTTP_ADDREQ_FLAG_ADD
	.if eax
		invoke	lstrlen,ebx
		add ebx,eax
		inc ebx
		jmp	$ahloop
	.endif
	invoke	lstrlen,addr strPostData
	invoke	HttpSendRequest,hRequest, 0, 0,addr strPostData, eax
	invoke	MessageBox,NULL,CTXT("test"),NULL,MB_OK 
2008-11-12 14:54
0
雪    币: 1564
活跃值: (3572)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
9
我的精华文章里面有关于这个的
(*^__^*) 嘻嘻……
2008-11-14 20:38
0
游客
登录 | 注册 方可回帖
返回
//