C++ 为什么JsonCpp http客户端在201响应代码上失败?
使用库,我正在使用创建EOS钱包C++ 为什么JsonCpp http客户端在201响应代码上失败?,c++,httpclient,blockchain,json-rpc,eos,C++,Httpclient,Blockchain,Json Rpc,Eos,使用库,我正在使用创建EOS钱包 我发现HttpClient接收到一个201响应代码。我不知道如何避免这个例外。有人知道吗?201基本上表示您的请求已成功处理。正如所解释的那样: 201创建请求已完成,并导致创建一个或多个新资源。 由请求创建的主资源由 响应中的位置标题字段,或者,如果没有位置字段 通过有效的请求URI接收 201响应有效负载通常描述和链接到 已创建资源。请参阅RFC7231第7.2节,了解对 验证程序头字段的含义和用途,如ETag和 最后修改,在201响应中 对响应数据应用任何
我发现
HttpClient
接收到一个201响应代码。我不知道如何避免这个例外。有人知道吗?201
基本上表示您的请求已成功处理。正如所解释的那样:
201创建请求已完成,并导致创建一个或多个新资源。
由请求创建的主资源由
响应中的位置标题字段,或者,如果没有位置字段
通过有效的请求URI接收
201响应有效负载通常描述和链接到
已创建资源。请参阅RFC7231第7.2节,了解对
验证程序头字段的含义和用途,如ETag和
最后修改,在201响应中
对响应数据应用任何进一步处理时,必须引发异常。如果没有更多的信息,我无法确切地说出这是什么原因。
201
基本上意味着您的请求已成功处理。正如所解释的那样:
201创建请求已完成,并导致创建一个或多个新资源。
由请求创建的主资源由
响应中的位置标题字段,或者,如果没有位置字段
通过有效的请求URI接收
201响应有效负载通常描述和链接到
已创建资源。请参阅RFC7231第7.2节,了解对
验证程序头字段的含义和用途,如ETag和
最后修改,在201响应中
对响应数据应用任何进一步处理时,必须引发异常。如果没有更多的信息,我无法确切地说是什么原因造成的。这个问题是由
HttpClient::SendRPCMessage()
实现中的一个错误引起的。
在内部,使用libcurl进行HTTP处理,在SendRPCMessage()
实现的最后,检查curl\u easy\u perform()
是否成功:
long http_code = 0;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
if (http_code != 200) {
throw JsonRpcException(Errors::ERROR_RPC_INTERNAL_ERROR, result);
}
如您所见,SendRPCMessage()
会对除200以外的任何HTTP响应代码引发异常。但是,所有2xx响应代码都表示成功,而不仅仅是200。在这种情况下,指:
10.2.2 201已创建
请求已完成,并导致创建新资源。新创建的资源可由响应实体中返回的URI引用,其中位置标头字段给出了资源的最特定URI。响应应包括一个实体,其中包含资源特征和位置列表,用户或用户代理可从中选择最合适的一个。实体格式由内容类型标题字段中给定的媒体类型指定。源服务器必须在返回201状态代码之前创建资源。如果无法立即执行该操作,则服务器应改为使用202(已接受)响应
201响应可能包含ETag响应头字段,该字段指示刚刚创建的请求变量的实体标记的当前值,请参阅
这显然是SendRPCMessage()
实现中的一个逻辑错误。对http_代码的检查应该更像这样:
if ((http_code / 100) != 2)
这将把所有2xx响应代码视为成功
我已经向json rpc cpp的作者提交了一份错误报告:
该问题是由HttpClient::SendRPCMessage()实现中的错误引起的。
。
在内部,使用libcurl进行HTTP处理,在SendRPCMessage()
实现的最后,检查curl\u easy\u perform()
是否成功:
long http_code = 0;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
if (http_code != 200) {
throw JsonRpcException(Errors::ERROR_RPC_INTERNAL_ERROR, result);
}
如您所见,SendRPCMessage()
会对除200以外的任何HTTP响应代码引发异常。但是,所有2xx响应代码都表示成功,而不仅仅是200。在这种情况下,指:
10.2.2 201已创建
请求已完成,并导致创建新资源。新创建的资源可由响应实体中返回的URI引用,其中位置标头字段给出了资源的最特定URI。响应应包括一个实体,其中包含资源特征和位置列表,用户或用户代理可从中选择最合适的一个。实体格式由内容类型标题字段中给定的媒体类型指定。源服务器必须在返回201状态代码之前创建资源。如果无法立即执行该操作,则服务器应改为使用202(已接受)响应
201响应可能包含ETag响应头字段,该字段指示刚刚创建的请求变量的实体标记的当前值,请参阅
这显然是SendRPCMessage()
实现中的一个逻辑错误。对http_代码的检查应该更像这样:
if ((http_code / 100) != 2)
这将把所有2xx响应代码视为成功
我已经向json rpc cpp的作者提交了一份错误报告: