This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3135MOD:HttpClient_readResponseBody 返回错误-2005

Guru**** 2482105 points
Other Parts Discussed in Thread: CC3135MOD, CC3135

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1339377/cc3135mod-httpclient_readresponsebody-returns-error--2005

器件型号:CC3135MOD
主题中讨论的其他器件: CC3135

您好!

我正在将 CC3135MOD 与 MSP432E4一起使用来对远程服务器执行 HttpPost。 将 HTTPGET 示例添加到 HTTPOST 中

当我上传文件时、HttpPost 可以工作、但有时我从 HttpClient_readResponseBody 中获得-2005。

我在 network_if 库中激活了 UART_print 函数、然后在 SimpleLinkFatalErrorEventHandler 中放置一个断点、以获取调用堆栈。

错误在一定程度上来自于 verify_Protocol 处等于零_SlDrvDataReadOp 的长度

发生这种情况时、与 AP 的 WiFi 通信关闭。

尝试理解 len 为什么等于0、我看到了以下情况:

- getChunkedData 呼叫 readRawResponseBody 带有 len = 10

-在 readRawResponseBody len = 537014896并调用 SlNetSock_recv

- in lNetSock_recv len = 0

有什么想法为什么会发生这种情况,以及如何解决它?

感谢 Yor 的帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我需要检查 代码以提出修复建议(我将在本周晚些时候进行修复)、但 您的调试信息没有意义。 请查看反汇编代码、确保在提到的函数中读取正确的长度值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Kobi、

    我正在使用 simplelink_msp432e4_SDK_4_20_00_12和 simplelink_SDK_WIFI_PLUGIN_4_20_00_10

    我注意到两个 SDK 中都有一些像 httpclient 这样的文件。 有任何冲突吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是重复的、但不应该产生冲突(simplelink_sdk_WIFI_PLUGIN_4_20_00_10应该用于不具有网络堆栈的 SDK、在这种情况下、它会添加这些堆栈)。

    关于问题-可能回复的格式错误。 什么是传输编码? 它是分块传输吗?

    基本上 getChunked 试图获得主体长度根据响应标题,但我可以找到一个路径,到达  readRawResponse 正文 len = 0。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、这是通过 HttpPost 上传文件的分块传输。  

    第一个数据包为: ret = HttpClient_sendRequest (clientHandle、HTTP_METHOD_POST)
    pHttpConfig->requestURI,(char*) pubBuffer,0,HttpClient_funk_start);

    然后、执行以下操作 ret = HttpClient_sendRequest (clientHandle、HTTP_METHOD_POST、
    pHttpConfig->requestURI,(char*) pubBuffer,pStream,0)

    我还尝试了;HttpClient_Drop_body 但未生效

    然后、最后一个数据包使用: rett = HttpClient_sendRequest (clientHandle、HTTP_METHOD_POST、
    pHttpConfig->requestURI,(har*) pubBuffer,0,HttpClient_chunK_end);

    关于响应、在阅读关于最后一个数据包的一些问题后、我使用以下代码  

    do
    	{
    	    bytesRead = HTTPClient_readResponseBody(clientHandle, data, sizeof(data),
    				&moreDataFlag);
    		if (bytesRead < 0)
    		{
    			cmdLine_cprintf("ERROR: HTTP response body processing failed. Error: %d", bytesRead);
    	        count = 0;
    	        return (-1);
    		}
    		len += bytesRead;
    		//cmdLine_printf(".");
    		//cmdLine_cprintf("http len: %d resp: %s",len, data);
    	}
    	while (moreDataFlag && bytesRead > 0); 

    作为服务器的响应、我得到文件名。 我可以确认、当我收到10个字符作为响应时、情况就是这样(len = 10、正如我在上一个问题中所说的那样)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您认为、当问题发生时、与 AP 的通信中断、这意味着什么?

    您希望 HTTP 在没有 网络连接的情况下如何工作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    通过 CC3135和 WiFi 接入点的网络通信良好。

    有时我可以正确地发布多个文件。  

    但突然在结束的一个 HTTP 文章这-2005错误发生,如果我再次尝试发布我得到错误-2006显示到 WiFi 接入点的网络连接关闭。

    您说过您 可以找到一条到达  readRawResponse 正文  len = 0。 您能解释一下这是哪条路吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我 想说我  无法 查找...

    您将需要 在 HttpClient 代码中添加日志、以便我们能够理解这一点(除非断点和单步执行代码的方式更好)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    确定

    关于 HttpClient 中的日志和断点,这就是我在问题中所做和描述的内容。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    该描述没有意义、因此建议使用反汇编代码遵循长度。    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在调试期间使用的源代码与我正在使用的实际编译库之间是否存在一些差异。 这可以解释函数调用和函数内部相同变量之间值的变化吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以将正在调试的文件复制到 CCS 应用程序工程(您可能需要解决1-2个包含路径问题)。

    这将作为任何其他应用程序文件进行编译、并覆盖库实现。

    不应该有任何 差异 (但我不知道你到底改变了什么)。