Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带有标头的post请求中出现错误411(需要长度),但标头具有内容长度。libCurl_C++_Post_Libcurl - Fatal编程技术网

C++ 带有标头的post请求中出现错误411(需要长度),但标头具有内容长度。libCurl

C++ 带有标头的post请求中出现错误411(需要长度),但标头具有内容长度。libCurl,c++,post,libcurl,C++,Post,Libcurl,我使用以下选项: curl_easy_setopt(curl, CURLOPT_URL, urlUpload); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body.c_str()); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header); 它必须是带有标题的post请求。头变量中有长度

我使用以下选项:

curl_easy_setopt(curl, CURLOPT_URL, urlUpload); 
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header);
它必须是带有标题的post请求。头变量中有长度

***
char sizeStr[50];
sprintf(sizeStr, "Content-Length: %d", body.length());

*** 

header = curl_slist_append(header, sizeStr);

***
我想做的是将视频上传到YouTube,我正在使用

我收到了这样的错误

<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<title>Error 411 (Length Required)!!1</title>
<style>
  *many symbols here* 
</style>
<a href=//www.google.com/ id=g><img src=//www.google.com/images/logo_sm.gif alt=Google></a>
<p><b>411.</b> <ins>Thatв€™s an error.</ins>
<p>POST requests require a <code>Content-length</code> header. <ins>Thatв€™s all we know.</ins>
也许我必须使用一些其他选项

更新: 当我设定

curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
我也收到

* About to connect() to uploads.gdata.youtube.com port 80 (#0)
*   Trying 74.125.XX.XXX... * connected
* Connected to uploads.gdata.youtube.com (74.125.XX.XXX) port 80 (#0)
> POST /feeds/api/users/default/uploads HTTP/1.1

Accept: */*

Host: uploads.gdata.youtube.com

Authorization: GoogleLogin auth=DQAAAIkAAACTK9tZPCTY1XQvXGkg4qkaIuZ1QO-Bh6-    ZyzOHuigFNC_gR4Piep4NljAjdOP4s-k7vqj-j4LdckXM9jxzlElgtaxr-    CShI1vIWkjm5ZtFsj3a9v1YqFmjIkEi3NCP2ON18D9jmXSIarPqprWiOK0n3oxznCBhm4osXwJ1yRstVVM5bG5mOlC331eMCrOKp3E


GData-Version: 2

X-GData-Key:     key=AI39si59VMkm6DATDmfG_Df6D23jfto3xRVfbAEMrFBv035pdRZ5AYMPsRXbGLCRXXnK5jz6KCSWSkuXOTrlDIIKWy7Le9fkQQ

Slug: screen.avi

Content-Type: multipart/related; boundary="d31fcjR2"

Content-length: 910273

Connection: close


* HTTP 1.0, assume close after body
< HTTP/1.0 411 Length Required

< Content-Type: text/html; charset=UTF-8

< Content-Length: 11791

< Date: Fri, 02 Sep 2011 16:09:58 GMT

< Server: GFE/2.0

< 

* Closing connection #0
*即将连接()到uploads.gdata.youtube.com端口80(#0)
*正在尝试74.125.XX.XXX…*有联系的
*已连接到uploads.gdata.youtube.com(74.125.XX.XXX)端口80(#0)
>POST/feed/api/users/default/uploads HTTP/1.1
接受:*/*
主持人:uploads.gdata.youtube.com
授权:GoogleLogin auth=DQAAIKAAACTK9TZPCTY1XQVXGKG4QKAIUZ1QO-Bh6-ZYZHOUIGFNCgR4Piep4NljAjdOP4s-k7vqj-j4LdckXM9jxzlElgtaxr-CSHI1VIWKJM5ZTFSJ3A9V1YQFMJIKEI3NCP20N8D9JMXSIARPRWIOK0N3OxZnCBHM4OSXWJ1YRSTM5BG5MOLC331VV3E
GData版本:2
X-GData-Key:Key=AI39si59VMkm6DATDmfG_DF6D23JFTO3XRFBAEMRBV035PDRZ5AYMPSRXBGLCRXXNK5JZ6KCSWSKUXOTRLDIKWY7LE9FKQQ
Slug:screen.avi
内容类型:多部分/相关;boundary=“d31fcjR2”
内容长度:910273
连接:关闭
*HTTP 1.0,假设在正文之后关闭
CURLOPT_POSTFIELDS将使内容长度由libcurl自动添加,无需进行自定义。但是,由于您已经发送了一个content-length标头,显然它不是服务器所说的缺少的长度


您的请求还发送了一个“连接:关闭”,因此您没有向我们显示更多的代码。

此错误是因为我从YouTube接收到的身份验证字符串中最后是新行符号,我将其删除,此错误消失

我这么做是因为我说要这么做。当我从文章标题中删除内容长度时,curl\u easy\u setopt(curl,CURLOPT\u VERBOSE,1L)的结果是相同的+1;节省了我很多时间。谢谢你的回答!那到底是什么意思?