HttpSendRequest发送post请求返回错误12150?

dfsgg 2014-08-25 08:54:12
char    szAccept[]   = "Accept: */*";   //接受文件的类型
CString strHeaders = _T("application/x-www-form-urlencoded;\r\n");//
char szReferer[] = "Referer:http://pay.gz163.cn/web/index.php"; //这个最好写下,不然有的网站说盗链什么的检测不通过
//CString szFormData = "operate=checkweakpwd&username=18184500731"+ "&password=37061146"+"&t0.6191092612754476"; //我们上面分析出来的”参数“
CString szFormData = "action=checkbind&phone=18085686724&areaCode=0851&numberType=0&token=314aaf65c5ee8372aa1f7644548207a5";
MessageBox(szFormData);
HINTERNET hSession;
HINTERNET hConnect;
HINTERNET hRequest;
BOOL bReturn = FALSE;

// 之前使用Socket,现在使用Wininet相关API建立链接 ,初始化 WinInet.dll 并联接服务器,返回相应的句柄
hSession = InternetOpen("testlogin",
INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); //初始化 WinInet.dll,开始 HTTP会话,建立 HTTP 连接
hConnect = InternetConnect(hSession,"pay.gz163.cn",
INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,1); //建立 Internet 的连接,开始 HTTP会话,
hRequest = HttpOpenRequest(hConnect,"POST","/web/index.php?t=3", "HTTP/1.1",szReferer,(LPCSTR *)&szAccept,INTERNET_FLAG_RELOAD,1); //打开一个 HTTP 请求的句柄
int i = GetLastError();
// 提交数据表单
LPVOID pBuf = (LPVOID)szFormData.GetBuffer(szFormData.GetLength());
bReturn = HttpSendRequest(hRequest,
strHeaders,-1L,pBuf,szFormData.GetLength()); //向 HTTP 服务器发送指定的请求

//HttpAddRequestHeaders 添加一个或多个 HTTP 请求报头到 HTTP请求句柄
i = GetLastError();

前面一些都好,就是到这里出现了错误,希望大神指导下,
...全文
615 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfsgg 2014-09-01
  • 打赏
  • 举报
回复
引用 6 楼 hurryboylqs 的回复:
按以下方式声明“ TCHAR szHeader[] = { // 如果提交的是表单,那么这个MIME 一定要带! _T("Content-Type: application/x-www-form-urlencoded\r\n") }; [quote=引用 7 楼 hurryboylqs 的回复:] LPTSTR AcceptTypes[2] = {TEXT("*/*"), NULL};
6楼回答的大哥:
//char    szAccept[]   = "Accept: */*";   //接受文件的类型
  //  CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded\r\n;");//
//在这里按你的方式声明	
LPTSTR AcceptTypes[2] = {TEXT("*/*"), NULL};
TCHAR szHeader[] =
	{
		// 如果提交的是表单,那么这个MIME 一定要带!
		_T("Content-Type: application/x-www-form-urlencoded\r\n")
	};    
char    szReferer[]  = "Referer:http://pay.gz163.cn/web/index.php"; 
	CString szFormData = "action=checkbind&phone=18085686724&areaCode=0851&numberType=0&token=314aaf65c5ee8372aa1f7644548207a5";
	MessageBox(szFormData);
    HINTERNET   hSession;      
    HINTERNET   hConnect;      
    HINTERNET   hRequest;      
    BOOL        bReturn  = FALSE;   
    hSession = InternetOpen("testlogin",
                            INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); 
    hConnect = InternetConnect(hSession,"pay.gz163.cn",
                               INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,1); 
    hRequest = HttpOpenRequest(hConnect,"POST","/web/index.php?t=3", "HTTP/1.1",szReferer,(LPCSTR *)&szAccept,INTERNET_FLAG_RELOAD,1);
	int i =  GetLastError();
    LPVOID pBuf = (LPVOID)szFormData.GetBuffer(szFormData.GetLength());   
    bReturn = HttpSendRequest(hRequest,
              strHeaders,-1L,pBuf,szFormData.GetLength()); 
	i =  GetLastError();
dfsgg 2014-09-01
  • 打赏
  • 举报
回复
引用 4 楼 VisualEleven 的回复:
用抓包工具抓个包看看不就清楚了吗?
引用 5 楼 FireBurn 的回复:
截图里面不是显示 200 OK吗? 另外楼主你并没有在函数里面使用那个strHeaders
那个图就是我抓的图,但是用模拟post就出现了12150
FireBurn 2014-08-31
  • 打赏
  • 举报
回复
截图里面不是显示 200 OK吗? 另外楼主你并没有在函数里面使用那个strHeaders
hurryboylqs 2014-08-31
  • 打赏
  • 举报
回复
LPTSTR AcceptTypes[2] = {TEXT("*/*"), NULL};
hurryboylqs 2014-08-31
  • 打赏
  • 举报
回复
按以下方式声明“ TCHAR szHeader[] = { // 如果提交的是表单,那么这个MIME 一定要带! _T("Content-Type: application/x-www-form-urlencoded\r\n") };
dfsgg 2014-08-28
  • 打赏
  • 举报
回复
char    szAccept[]   = "Accept: */*";   //接受文件的类型
CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded\r\n;");//
char szReferer[] = "Referer:http://pay.gz163.cn/web/index.php";
CString szFormData = "action=checkbind&phone=18085686724&areaCode=0851&numberType=0&token=314aaf65c5ee8372aa1f7644548207a5";
MessageBox(szFormData);
HINTERNET hSession;
HINTERNET hConnect;
HINTERNET hRequest;
BOOL bReturn = FALSE;
hSession = InternetOpen("testlogin",
INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
hConnect = InternetConnect(hSession,"pay.gz163.cn",
INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,1);
hRequest = HttpOpenRequest(hConnect,"POST","/web/index.php?t=3", "HTTP/1.1",szReferer,(LPCSTR *)&szAccept,INTERNET_FLAG_RELOAD,1);
int i = GetLastError();
LPVOID pBuf = (LPVOID)szFormData.GetBuffer(szFormData.GetLength());
bReturn = HttpSendRequest(hRequest,
strHeaders,-1L,pBuf,szFormData.GetLength());
i = GetLastError();

改过之后的
dfsgg 2014-08-28
  • 打赏
  • 举报
回复
改了,改过之后还是原来的错误12150,
Eleven 2014-08-28
  • 打赏
  • 举报
回复
用抓包工具抓个包看看不就清楚了吗?
Yofoo 2014-08-27
  • 打赏
  • 举报
回复
你的这个 strHeaders 不对吧 用这个试试 "Accept-Language: zh-cn\r\n" "Content-Type: application/x-www-form-urlencoded\r\n";

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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