想要实现http方式的文件上传功能,可是运行到HttpSendRequestEx的时候返回错误 errorcode = 12007[The server name could not be resolved]
请大家帮帮忙,我是整部明白了。以下是我的代码:
---------------------------------
HINTERNET hInternet = NULL;
HINTERNET internetopenurl;
DWORD byteread=0;
char buffer[100];
memset(buffer,0,100);hInternet = InternetOpen("aaa", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(hInternet == NULL)
{
    return -1;
}HINTERNET hConnect = InternetConnect(hInternet, 
    "http://localhost:8080/Vss_WorkFlow", 
    8080, 
    "admin", 
    "", 
    INTERNET_SERVICE_HTTP,
    0,
    0);
if(hInternet == NULL)   return -1;const char *FAcceptTypes = "*/*";
HINTERNET hRequest = HttpOpenRequest(hConnect, "PUT", 
     "http://localhost:8080/Vss_WorkFlow/asd.xls", // 想读取的文件的名称
     "HTTP/1.0", // 使用的协议
     NULL,
     &FAcceptTypes,
     INTERNET_FLAG_RELOAD,     0);
if(hRequest == NULL)   return -1;INTERNET_BUFFERS inBuf;
memset(&inBuf,   0,   sizeof(INTERNET_BUFFERSA));   
inBuf.dwStructSize   =   sizeof(INTERNET_BUFFERSA);   
inBuf.dwBufferTotal   =   1000;   BOOL bSendRequestEx = HttpSendRequestEx(hRequest, &inBuf, NULL, 0, 0);
if(FALSE == bSendRequestEx)
{
    // 上面应该没有问题,就是运行到这里的时候过不去。
    printf(fp, "GetLastError(%d)---------------\n", GetLastError());
    return -1;
}

解决方案 »

  1.   

    没做过,猜一下。HttpOpenRequest的第3参数给"asd.xls"试试。
      

  2.   

    现在这个问题已经解决了,原因是HttpOpenRequest的第三个参数应该是虚拟路径,而我写的是绝对路径。
    但是现在又有了新的问题。
    internetreadfile=InternetWriteFile(hRequest,buffer,sizeof(buffer),&dWritedNum);
    已经成功调用了这个函数,但是实际的磁盘上并没有做成新文件?
      

  3.   

    InternetCloseHandle正常关闭了吗?
      

  4.   

    http://www.xiaozhou.net/cooldog/article.asp?id=57
    http://topic.csdn.net/t/20020513/10/717685.html
    不知道你代码对不对,还有是否有创建文件的权利?