VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2847|回复: 7

[求助] 【新手菜鸟请教POST 出现400错误的原因】

[复制链接]
21_avatar_middle
online_vip 发表于 2015-10-23 15:16:29 | 显示全部楼层 |阅读模式
最近学习Http,边看资料边实践,可怎么写也不对,服务器总是返回  400  Bad Request,这是什么原因,该如何解决呐。求高手指点,讲解!!在此拜谢!!
一下是代码:CString strUsername, strPasswd, str_Url;
        this->GetDlgItem(IDC_ACCOUNT_EDIT)->GetWindowText(strUsername);
        this->GetDlgItem(IDC_PASSWORD_EDIT)->GetWindowText(strPasswd);
        this->GetDlgItem(IDC_URL_EDIT)->GetWindowText(str_Url);
        if(strUsername.IsEmpty() || strPasswd.IsEmpty() || str_Url.IsEmpty())
        {
                AfxMessageBox(_T("内容不能为空!"));
                return;
        }
        CString strUrl = _T("http://") + str_Url + _T("/elgg/services/api/rest/json/?");
        CString strPost = _T("method=auth.gettoken&name=") + strUsername;
        strPost +=_T( "&password=") + strPasswd;
        strPost += _T("&api_key=36116967d1ab95321b89df8223929b14207b72b1");
        std::string res;
        //m_HttpClient.HttpPost(strUrl, strPost, res);
        CString strServer;
        CString strObject;
        DWORD dwServiceType;
        INTERNET_PORT nPort;
        AfxParseURL(strUrl, dwServiceType, strServer, strObject, nPort);
        if(AFX_INET_SERVICE_HTTP != dwServiceType && AFX_INET_SERVICE_HTTPS != dwServiceType)
        {
                return ;
        }

        try
        {
                m_pConnection = m_pSession->GetHttpConnection(strServer,
                        dwServiceType == AFX_INET_SERVICE_HTTP ? NORMAL_CONNECT : SECURE_CONNECT,
                        nPort);
                m_pFile = m_pConnection->OpenRequest(_T("post"), strObject,
                        NULL, 1, NULL, NULL,
                        (dwServiceType == AFX_INET_SERVICE_HTTP ? NORMAL_REQUEST : SECURE_REQUEST));
m_pFile->AddRequestHeaders(_T("Accept: *,*/*"));
                m_pFile->AddRequestHeaders(_T("Accept-Language: zh-cn"));
                m_pFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded"));
                m_pFile->AddRequestHeaders(_T("Accept-Encoding: gzip, deflate"));

                m_pFile->SendRequest(NULL, 0, (LPVOID)(LPCTSTR)strPost, _tcslen(strPost));
}
        catch (CInternetException* e)
        {





上一篇:vs2013 编写lib库导出问题?
下一篇:新人求教
51_avatar_middle
online_admins 发表于 2015-10-23 15:48:56 | 显示全部楼层
这个光看你这个代码没用,关键的还是要对比你发的包和浏览器发的包有什么不同,少不少什么字段之类的,对比下就会发现问题
21_avatar_middle
ico_lz  楼主| 发表于 2015-10-23 16:01:44 | 显示全部楼层
Syc 发表于 2015-10-23 15:48
这个光看你这个代码没用,关键的还是要对比你发的包和浏览器发的包有什么不同,少不少什么字段之类的,对比 ...

对比后发现我发的包就是一堆乱码,怪不得服务器不识别。该怎么设置自己发送的包?或者说该怎么和服务器进行约定。
51_avatar_middle
online_admins 发表于 2015-10-23 16:03:31 | 显示全部楼层
JiangMr 发表于 2015-10-23 16:01
对比后发现我发的包就是一堆乱码,怪不得服务器不识别。该怎么设置自己发送的包?或者说该怎么和服务器进 ...

就正常在代码中封包组包,之后通过 WinHttp 的 Send 函数发出去就可以了
21_avatar_middle
ico_lz  楼主| 发表于 2015-10-23 16:05:13 | 显示全部楼层
Syc 发表于 2015-10-23 15:48
这个光看你这个代码没用,关键的还是要对比你发的包和浏览器发的包有什么不同,少不少什么字段之类的,对比 ...

这个和编码时用的码制有关系嘛?
51_avatar_middle
online_admins 发表于 2015-10-23 16:05:51 | 显示全部楼层
JiangMr 发表于 2015-10-23 16:05
这个和编码时用的码制有关系嘛?

如果你发送的内容是纯英文的话,编码影响不大,也不至于都是乱码
21_avatar_middle
ico_lz  楼主| 发表于 2015-10-23 16:15:07 | 显示全部楼层
file:///C:/Users/PC%20for%20UI/Desktop/QQ%E5%9B%BE%E7%89%8720151023161442.png
21_avatar_middle
ico_lz  楼主| 发表于 2015-10-23 16:17:20 | 显示全部楼层
Syc 发表于 2015-10-23 16:05
如果你发送的内容是纯英文的话,编码影响不大,也不至于都是乱码

不会发图片,真想让老大你帮看看差啥呢【新手菜鸟请教POST 出现400错误的原因】
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-19 23:44

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表