|
大家好,我写了一个用post给一个网络地址发送图片文件的代码,对方说接受不到,为什么啊?
大家帮小弟分析分析问题出在哪里了,小弟非常感谢。
void CCarInfoSendDlg::OnBnClickedButtonImg()
{
HANDLE hFile = CreateFile(L"D:\\0409110118-1-3.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/a/Token/9cf42470ba33c05492c7b00375ba474d/sign/add"));
if (FAILED(hr))
{
return;
}
_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;
}
}
0.网络相关,一般需要先用工具试试接口对不对,然后再写代码。
1.用postman发视频看能不能接收到
2.如果能接收到,用wireshark抓包分析 自己发的和postman发的有什么区别
3.改代码
|
上一篇: C++习题下一篇: 怎么让列表设置为选中后变成蓝色
|