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

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

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费
支持
分享
最新回复 (8)
雪    币: 424
活跃值: (2329)
能力值: ( 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试了下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
自己解决了,还是我那个代码不过有个地方写错了改成这样就可以了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
活跃值: (3567)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
9
我的精华文章里面有关于这个的
(*^__^*) 嘻嘻……
2008-11-14 20:38
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册