小编Tom*_*ght的帖子

用于分块编码的HTTP标头POST - 错误411

我正在将数据发送到带有Arduino的服务器,这需要逐行构建HTML POST.我不一定知道Content-Length a-priori,所以我使用"chunked"编码.

当我尝试使用rfc2616中指定"Transfer-Encoding"选项从Wikipedia发布此示例帖子时

client.println("POST /myurl HTTP/1.1");
client.println("Host: 12.345.679.999"); // replaced with the test server's IP
client.println("User-Agent: Arduino/1.0");
client.println("Transfer-Encoding: chunked");
client.println();  
client.println("4");
client.println("test");
client.println("0");
client.println();
Run Code Online (Sandbox Code Playgroud)

或者,使用转义字符显式:

client.print("4\r\ntest\r\n0\r\n\r\n");
Run Code Online (Sandbox Code Playgroud)

我从服务器收到错误:

HTTP/1.1 411 Length Required
A request of the requested method POST requires a valid Content-length.
Server: Apache/2.2.22 (Ubuntu)
Run Code Online (Sandbox Code Playgroud)

但是,"chunked"编码不应该要求Content-Length头字段,请参阅rfc2616中的4.4 - 消息长度

我错过了一个领域吗?为什么这个电话不起作用?

为了记录,非Chunked-Encoding工作:

if(client.connect(server, 80)){
    String PostData = "test";
    Serial.println("POST /myurl HTTP/1.1");
    client.println("Host: 12.345.679.999"); // replaced with the test server's IP
    Serial.println("User-Agent: Arduino/1.0"); …
Run Code Online (Sandbox Code Playgroud)

http arduino http-post http-error http-headers

16
推荐指数
1
解决办法
1万
查看次数

RCurl - 布尔选项

这些Curl文档:http://curl.haxx.se/docs/manpage.html#-d列出了许多布尔选项.

如何在RCurl中的postForm调用中指定这些选项?例如,如何指定--sslv3标志?

我试过了

postForm(url, .opts = list(sslv3=TRUE))
Run Code Online (Sandbox Code Playgroud)

但收到错误:

Warning message:
In mapCurlOptNames(names(.els), asNames = TRUE) :
  Unrecognized CURL options: sslv3
Run Code Online (Sandbox Code Playgroud)

提前致谢.

通过一些反复试验,我发现这有效:

options(RCurlOptions = list(sslversion=3))
postForm(url)
Run Code Online (Sandbox Code Playgroud)

如果有人可以澄清如何将Curl选项转换为RCurl选项,那将是值得赞赏的!

r rcurl

3
推荐指数
1
解决办法
877
查看次数

Worksession变量 - MATLAB

我正在编写一系列与服务器通信的MATLAB函数urlread.此程序包中用于进行此调用的每个函数都需要身份验证usernamekey.

我宁愿不要求用户在传递usernamekey调用每一个功能的时候.相反,我更喜欢有一个signin(username, key)函数来设置/保存这些变量,使得这个包中的每个函数都可以调用.

我现在的解决方案是signin.m保存usernamekey临时文件,并修改finish.m以在MATLAB关闭时擦除此临时文件.包中的每个函数都将从该临时文件加载这些变量.但是,如果有人强行退出MATLAB,这个临时文件将不会被删除(对吗?).

另一种解决方案是signin保存usernamekey作为全局变量.但是,如果用户调用clear all,这些变量将被删除工作空间,用户将需要signin再次调用(这是一个麻烦).

有没有办法设置全局的"会话"变量,而不是用clear all命令删除?还有其他建议吗?

matlab

2
推荐指数
1
解决办法
341
查看次数

在类的结构中初始化成员(其构造函数接受参数)

当我尝试使用这种通用格式的代码时,我收到编译器的错误:

在classname.hpp中

#include "otherclass.hpp"
class classname {
public:
    typedef struct {
        otherclass membername(sometype);
    } structname;
    void functionname(structname& exampleData);
}
Run Code Online (Sandbox Code Playgroud)

在main.cpp中,我定义了一个变量exampleData:

classname::structname exampleData;
Run Code Online (Sandbox Code Playgroud)

在classname.cpp中,我有一个使用exampleData的函数,并尝试初始化struct的成员,membername:

void classname::functionname(structname& exampleData){
    sometype a;
    exampleData.membername(a);
}
Run Code Online (Sandbox Code Playgroud)

我从编译器收到错误说明:

未定义的符号:classname::structname::membername(sometype)" classname::functionname(classname::structname&)在classname.o中引用.ld:符号未找到

我认为我的错误在于线

otherclass membername(sometype)
Run Code Online (Sandbox Code Playgroud)

我还以为它可能是:

otherclass membername(sometype& a)
Run Code Online (Sandbox Code Playgroud)

但我收到了同样的错误.

我想知道这是否合法,在构造函数不是()的类中的结构中有一个成员.在main.cpp中,当我声明exampleData时,membername尚未初始化.这是合法的还是我在错误的地方打猎?

c++ struct initialization class

-2
推荐指数
1
解决办法
282
查看次数

标签 统计

arduino ×1

c++ ×1

class ×1

http ×1

http-error ×1

http-headers ×1

http-post ×1

initialization ×1

matlab ×1

r ×1

rcurl ×1

struct ×1