手动构建SOAP服务请求

时间:2013-09-30 16:19:45

标签: web-services google-app-engine soap arduino

我需要构建一个SOAP请求来请求存储在Google App Engine上的Web服务,因为我正在工作的平台没有用于管理Web服务请求的库(我正在编写Arduino Board)。 我的SOAP服务器存储在

http://arduino-data-server.appspot.com/

我需要在发送请求之前连接到服务器。这是我的代码:

char server[] = "www.arduino-data-server.appspot.com"; //server address
WiFiClient client;

if(client.connect(server, 80)) {
Serial.println("Connected to server, preparing request");
client.println("POST /dataserver HTTP/1.1");
client.println("Host: http://arduino-data-server.appspot.com");
client.println("Content-Type: text:xml; charset=utf-8");
client.println("SOAPAction: \"http://example.com/getData\"");
client.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
client.println("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
client.println("<soap:Body>");
client.println("<sendData xmlns=\"http://example.com/\"");
client.println("<temperatura> 22 </temperatura>");
client.println("<umidita> 55 </umidita>");
client.println("</sendData>");
client.println("</soap:Body>");
client.println("</soap:Envelope>");
client.println();
Serial.println("OK");
 }else {
Serial.println("KO");
  }
}

似乎没关系,但在我的服务器上,没有检测到传入的连接。怎么了?

这里是wsdl文件:arduino-data-server.appspot.com/FunctionsService.wsdl

1 个答案:

答案 0 :(得分:0)

我认为这不是问题,但缺少一个&gt;符号:

client.println("<sendData xmlns=\"http://example.com/\"");

应该是:

client.println("<sendData xmlns=\"http://example.com/\">");

来自阿根廷的问候

PD:我正在尝试用arduino做同样的事情。