|
大家好,有一个问题困扰我很久了,一直得不到解决,有了解这方面的帮助一下小弟。
我的问题是,我想给你一个网络地址提交图片,我用Postman可以成功提交,入图
然后我用fiddler可以抓包,抓包的结果如图
现在我用VC编码的方式想实现它,我的代码如下:我是按fiddler的抓包的截图写的文件头,文件体。但是我一提交,返回的结果是错误的,postman返回的结果是成功的。
让我不知道怎么解决的是:第一,我代码也不知道哪里写的不对,第二,我用vc代码写的程序的方式运行,fiddler竟然抓不到包。如果能抓的包,我还能对对自己是哪里的构造的提交内容不对。
void CCarInfoSendDlg::OnBnClickedButtonImg()
{
CoInitialize(NULL);
CString strBoundary(_T("--------------------------815792364980747702945512"));
CString strBody;
strBody += strBoundary;
strBody += _T("\r\nContent-Disposition: form-data; name=\"Token\"\r\n\r\n");
strBody += _T("9cf42470ba33c05492c7b00375ba474d");
strBody += _T("\r\n");
strBody += strBoundary;
strBody += _T("\r\nContent-Disposition: form-data; name=\"type\"\r\n");
strBody += _T("\r\nimg\r\n");
strBody += strBoundary;
strBody += _T("\r\nContent-Disposition: form-data; name=\"id\"\r\n");
strBody += _T("\r\n2\r\n");
strBody += strBoundary;
strBody += _T("\r\nContent-Disposition: form-data; name=\"name\"\r\n");
strBody += _T("\r\nimg_headstock\r\n");
strBody += strBoundary;
strBody += _T("\r\nContent-Disposition: form-data; name=\"file\"; filename=\"0409105026-1-2.jpg\"\r\n");
strBody += _T("Content-Type: image/jpeg\r\n\r\n");
CFile mFile;
BOOL bRet = mFile.Open(L"D:\\0409105026-1-2.jpg", CFile::modeRead);
if (!bRet) return;
UINT nFileLen = (UINT)mFile.GetLength();
UINT nRealLen = strBody.GetLength() + nFileLen;
UINT mallocLen = strBody.GetLength() + nFileLen + 20;
char *pBuffer = new char[mallocLen];
ZeroMemory(pBuffer, mallocLen);
char *delBuffer = pBuffer;
USES_CONVERSION;
char *pBody = T2A(strBody);
memcpy(pBuffer, pBody, strBody.GetLength());
mFile.Read(pBuffer + strBody.GetLength(), nFileLen);
mFile.Close();
SAFEARRAY* psa = NULL;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = nRealLen;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < nRealLen; i++)
SafeArrayPutElement(psa, &i, pBuffer++);
VARIANT varBLOB;
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
IWinHttpRequestPtr pHttpReq = NULL;
HRESULT hr = pHttpReq.CreateInstance(__uuidof(WinHttpRequest));
if (FAILED(hr))
{
return;
}
hr = pHttpReq->Open(_T("POST"), _T("https://swhq.vhaoxun.com/api/vehicles/uswhq"));
if (FAILED(hr))
{
return;
}
pHttpReq->SetRequestHeader(_T("User-Agent"), _T("PostmanRuntime/7.28.0"));
pHttpReq->SetRequestHeader(_T("Accept"), _T("*/*"));
pHttpReq->SetRequestHeader(_T("Postman-Token"), _T("6e4d7530-2da4-4516-b94b-fcceaae33087"));
pHttpReq->SetRequestHeader(_T("Host"), _T("swhq.vhaoxun.com"));
pHttpReq->SetRequestHeader(_T("Accept-Encoding"), _T("gzip,deflate,br"));
pHttpReq->SetRequestHeader(_T("Connection"), _T("keep-alive"));
pHttpReq->SetRequestHeader(_T("Content-Type"), _T("multipart/form-data;boundary=--------------------------815792364980747702945512"));
pHttpReq->SetRequestHeader(_T("Content-Length"), _T("922952"));
hr = pHttpReq->Send(varBLOB);
if (FAILED(hr))
{
return;
}
delete[] delBuffer;
_bstr_t bs = pHttpReq->ResponseText;
CString strRe = bs;
MessageBox(strRe);
} |
上一篇: MFC的一个小问题。下一篇: MFC和Excel之间的读取问题
|