QueryInfoStatusCode得到的是500

other123othe 2014-09-01 04:27:23
对方要求的
POST /wintonescanner HTTP/1.1
Host: oscar.redforts.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,es;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------18386433624122650881791569604
Content-Length: 5069

-----------------------------18386433624122650881791569604
Content-Disposition: form-data; name="firstnames"

Ben
-----------------------------18386433624122650881791569604
Content-Disposition: form-data; name="surnames"

Siemerink
-----------------------------18386433624122650881791569604
Content-Disposition: form-data; name="idnumber"

12345678A
-----------------------------18386433624122650881791569604
Content-Disposition: form-data; name="birthdate"

1960-01-01
-----------------------------18386433624122650881791569604
Content-Disposition: form-data; name="expirydate"

2016-01-01
-----------------------------18386433624122650881791569604
Content-Disposition: form-data; name="issuedate"

2012-01-01
-----------------------------18386433624122650881791569604--



他们那边的服务器是https,我用http弄的,前面的单步跟踪的话都成功了,没有问题pFile->QueryInfoStatusCode(dwRet);的时候dwRet的返回值为500。我不知道是我的程序由问题还是他们那边的服务器有问题。贴一下代码


//以下是post
CString strResponsePage(L"d:\\test.log");
strResponsePage += ".log";
int nResult = 5;
CString strErrorMsg;
CString strURL;
GetDlgItem(IDC_EDIT1)->GetWindowText(strURL);
WideCharToMultiByte(CP_ACP,0,strURL,-1,NULL,0,NULL,NULL);
// WideCharToMultiByte(CP_UTF8,0,strURL,-1,NULL,0,NULL,NULL);

CString strParam;
strParam = L"firstnames=wintone&middlenames=1992070&surname=BeiJing&surname2=hello&postalcode=good&city=beijing&state=1";

WideCharToMultiByte(CP_ACP,0,strParam,-1,NULL,0,NULL,NULL);
// WideCharToMultiByte(CP_UTF8,0,strParam,-1,NULL,0,NULL,NULL);

if(!strURL.IsEmpty() && !strParam.IsEmpty())
{
int nResult = 5;
CInternetSession session(_T("HttpFilePOSTer"));
//WideCharToMultiByte(CP_UTF8,0,strParam,-1,NULL,0,NULL,NULL);

CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
TCHAR szBuff[1024];
DWORD dwRet;
CFile file;
// http://192.168.0.155:8080/UploadFile/servlet/strTest?name=123&birthday=20140827&address=456
DWORD dwServiceType;
CString strServer, strObject, strUsername, strPassword;
INTERNET_PORT nPort;

if (AfxParseURLEx(strURL, dwServiceType, strServer, strObject, nPort, strUsername, strPassword) == FALSE)
{
strErrorMsg = "地址错误";
nResult = 1;
return ;
}

try
{
pServer = session.GetHttpConnection(strServer, nPort);
CString version(L"HTTP/1.1");

pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject,NULL,1,NULL,(LPCTSTR)version,INTERNET_FLAG_SECURE|INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_RELOAD|INTERNET_FLAG_NO_CACHE_WRITE
|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID|INTERNET_FLAG_IGNORE_CERT_CN_INVALID);

BOOL flag= FALSE;
CString head;
head = L"User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

flag= FALSE;
head = L"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

flag= FALSE;
head = L"Accept-Language: en,es;q=0.5";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

flag= FALSE;
head = L"Accept-Charset: utf-8";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

flag = FALSE;
head = L"Accept-Encoding: gzip, deflate";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

flag = FALSE;
head = L"Connection: keep-alive";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

flag = FALSE;
head = L"Content-Type: multipart/form-data; boundary=---------------------------18386433624122650881791569604";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

flag = FALSE;
head = L"Content-Length: 5069";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

BOOL res = pFile->SendRequest(NULL,0,(LPVOID)(LPCTSTR)strParam,strParam.GetLength());
if(res == TRUE)
{
// AfxMessageBox()
}
else
{
return;

}

pFile->EndRequest();
pFile->QueryInfoStatusCode(dwRet);
if(dwRet == HTTP_STATUS_OK)
{
strErrorMsg = "提交成功";
AfxMessageBox(_T("oK,成功"));
}
else
{
strErrorMsg = "提交失败";
AfxMessageBox(_T("oK,失败"));
}
}
catch (CInternetException* pEx)
{
nResult = 1;
pEx->GetErrorMessage(szBuff, 1024);
strErrorMsg = szBuff;
}

if(pFile)
{
delete pFile;
pFile = NULL;
}
if(pServer)
{
delete pServer ;
pServer = NULL;
}
}



这里面的编码方式我也不知道用神马的,用 WideCharToMultiByte(CP_ACP,0,strURL,-1,NULL,0,NULL,NULL);
或者用 WideCharToMultiByte(CP_UTF8,0,strURL,-1,NULL,0,NULL,NULL); 返回值都是500.
还有 flag = FALSE;
head = L"Content-Type: multipart/form-data; boundary=---------------------------18386433624122650881791569604";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

flag = FALSE;
head = L"Content-Length: 5069";
// WideCharToMultiByte(CP_ACP,0,head,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,head,-1,NULL,0,NULL,NULL);
flag = pFile->AddRequestHeaders(head);

这两个头是要还是不要啊。我也搞不清楚。

感谢大侠了哈!
...全文
257 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
daicong210 2014-11-07
  • 打赏
  • 举报
回复
最好用wireshare抓取你发送的包与httpwatch看到的信息进行对比 看看那些不一样 然后你就明白了
daicong210 2014-11-07
  • 打赏
  • 举报
回复
我刚也遇到这个问题 告诉你不用unicode设置成多字节试试
oyljerry 2014-09-02
  • 打赏
  • 举报
回复
HTTP 500 - 内部服务器错误 https服务器不一定接收你的http
other123othe 2014-09-01
  • 打赏
  • 举报
回复
上面的代码 最后总是走到 提交失败 那块了
other123othe 2014-09-01
  • 打赏
  • 举报
回复
对方服务器是这个形式 https://oscar.。。。。。。。。。。。。。。

18,356

社区成员

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

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