gpt4 book ai didi

java - 使用 c 调用 REST 服务,通过 GSM 调制解调器连接 - HTTP/1.1 505

转载 作者:行者123 更新时间:2023-11-28 21:53:33 26 4
gpt4 key购买 nike

我有一个遵循 Spring MVC 并使用 Tomcat-7.0.50 部署的 REST Web 服务现在我想通过微 Controller 设备中的嵌入式代码来调用该服务。 GSM 调制解调器与设备一起托管,以通过 GPRS 建立连接。

这是用于调用部署在 tomcat 服务器中的 REST 服务的示例 C 代码。

char* connect_GPRS(void)
{
int cnt=0;

printf("connecting GPRS");
send_command("AT\r");
send_command("AT+CIPCLOSE\r");
send_command("AT+CIPSHUT\r");
send_command("AT+CIPCSGP=1,\"dialoguomlab\"\r");
send_command("AT+CGATT=1\r");
send_command("AT+CIPMODE=0\r");

send_command("AT+CIPSTART=\"TCP\",\"10.8.155.16\",\"8080\"\r"); // connect TCP
_delay_ms(1000);
send_command("AT+CIPSEND\r");
while ((strchr(modem_buf,'>')==NULL)&&(cnt<60)) //wait
{_delay_ms(100); cnt++; }
clr_buf();

// send web request to the webserver
fprintf(&modem,"POST /MyService/addnums HTTP/1.1\r\n\
Host: 10.8.155.16:8080\r\n\
Content-Type: text/html\r\n\
Content-length:6\r\n\r\n\
10,100\
%c",26);

while(modem_buf[0]==0); // wait for any data to come
_delay_ms(5000);
printf(modem_buf);
send_command("AT+CIPCLOSE\r");

_delay_ms(5000);
printf(modem_buf); // check if anything in the buffer

return modem_buf;
}

Web 服务托管在 url http://10.8.155.16:8080/MyService 下(ip 10.8.155.16只是一个示例,不是实际使用的,我们可以连接tomcat服务器)

这里是 REST 服务的代码。

@RequestMapping(value = "/addnums", method = RequestMethod.POST, headers = "Accept=text/html")
public @ResponseBody
String addNumbers(@RequestBody String request) {
try{

System.out.println("just enter to addnums.... " + request);

int sum = 0;
List<String> values = Arrays.asList(request.split(","));
for (String s : values) {
sum = sum + Integer.parseInt(s);
}
String sumAsString = Integer.toString(sum);
System.out.println("going to send the response");
return sumAsString;
}catch(Exception e){
System.out.println("Exception occured while processing..."+e.getMessage());
return "Error";
}
}

但是当调用这个时我们得到了错误

HTTP/1.1 505 HTTP Version Not Supported Server: Apache-Coyote/1.1 Date: Fri, 27 Jun 2014 04:45:27 GMT Connection: close

请帮助我确定根类(class)。

最佳答案

我们能够找到我自己的问题的答案并发帖,因为它可能对其他人有帮助。

我们能够通过单独的 TCP 服务器程序捕获请求,并且在调试请求行时我们看到设备在每个\n 之前添加了另一个\r。那么对于所有此类事件,字符串都有\r\r\n 。这就是程序无法运行的原因。因此,当通过删除\r 更改字符串时,问题就解决了。

    // send web request to the webserver
fprintf(&modem,"POST /MyService/addnums HTTP/1.1\n\
Host: 10.8.155.16:8080\n\
Content-Type: text/html\n\
Content-length:6\n\n\
10,100\
%c",26);

关于java - 使用 c 调用 REST 服务,通过 GSM 调制解调器连接 - HTTP/1.1 505,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24462040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com