|
我想给远程服务器上传文件,我用postman上传成功的。上传是也用fiddler抓包看了一下。附件中有详细的截图。
但是我想通过VC程序写,因为我是初学者,代码不知道怎么写,就照猫画虎的写,写的如下,本来想通过抓包工具fiddler抓包看看自己写的代码。但是fiddler里什么都抓取不到。这下不知道怎么搞了,请高手们指点迷津。小弟非常感谢!
HANDLE hFile = CreateFile(L"D:\\0409105026-1-2.jpg", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("open error\n");
return;
}
DWORD filesize = GetFileSize(hFile, NULL);
if (filesize == INVALID_FILE_SIZE)
{
printf("filesize error\n");
return;
}
char *buff = (char *)malloc(filesize);
memset(buff, 0, filesize);
DWORD dwRead = 0;
if (!ReadFile(hFile, buff, filesize, &dwRead, NULL))
{
printf("read error\n");
return;
}
CoInitialize(NULL);
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("Content-Type"), _T("multipart/form-data; boundary=--------------------------160208929958355896735465"));
pHttpReq->SetRequestHeader(_T("Connection"), _T("keep-alive"));
pHttpReq->SetRequestHeader(_T("Accept-Encoding"), _T("gzip, deflate, br"));
pHttpReq->SetRequestHeader(_T("Content-Disposition"), _T("form-data; name=\"Token\" /r/n 9cf42470ba33c05492c7b00375ba474d"));
pHttpReq->SetRequestHeader(_T("Content-Disposition"), _T("form-data; name=\"type\" /r/n img"));
pHttpReq->SetRequestHeader(_T("Content-Disposition"), _T("form-data; name=\"id\" /r/n 2"));
pHttpReq->SetRequestHeader(_T("Content-Disposition"), _T("form-data; name=\"file\"; filename=0409105026-1-2.jpg"));
//pHttpReq->SetRequestHeader(_T("Content-Type"), _T("image/jpeg"));
_variant_t varBlob = vtMissing;
SAFEARRAY* psa = NULL;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = filesize;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < (long)filesize; i++)
{
SafeArrayPutElement(psa, &i, buff++);
}
varBlob.vt = VT_ARRAY | VT_UI1;
varBlob.parray = psa;
hr = pHttpReq->Send(varBlob);
if (FAILED(hr))
{
return;
}
_bstr_t bs = pHttpReq->ResponseText;
CString strRe = bs;
MessageBox(strRe); |
上一篇: APlayer的SDK中的例子SimplePlayer编译错误下一篇: 关于vc处理高并发要如何来实现?
|