FIAPの使用の例(温度ノード)

Dependencies:   EthernetNetIf NTPClient_NetServices TextLCD mbed

Committer:
yueee_yt
Date:
Wed Jan 04 12:49:14 2012 +0000
Revision:
0:e489b051cf96

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yueee_yt 0:e489b051cf96 1 #include "fiap.h"
yueee_yt 0:e489b051cf96 2 #include "mbed.h"
yueee_yt 0:e489b051cf96 3 FIAP::FIAP(string Storage,string PointSetId) {
yueee_yt 0:e489b051cf96 4 debug_mode=false;
yueee_yt 0:e489b051cf96 5 _fiap_storage=Storage;
yueee_yt 0:e489b051cf96 6 _fiap_id_prefix=PointSetId;
yueee_yt 0:e489b051cf96 7
yueee_yt 0:e489b051cf96 8 _soap_header ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
yueee_yt 0:e489b051cf96 9 _soap_header += "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">";
yueee_yt 0:e489b051cf96 10 _soap_header += "<soapenv:Body>";
yueee_yt 0:e489b051cf96 11 _soap_header += "<ns2:dataRQ xmlns:ns2=\"http://soap.fiap.org/\">";
yueee_yt 0:e489b051cf96 12 _soap_header += "<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">";
yueee_yt 0:e489b051cf96 13 _soap_header += "<body>";
yueee_yt 0:e489b051cf96 14 _soap_header += "<pointSet id=\"" + _fiap_id_prefix +"\">";
yueee_yt 0:e489b051cf96 15
yueee_yt 0:e489b051cf96 16 _soap_footer ="</pointSet>";
yueee_yt 0:e489b051cf96 17 _soap_footer+="</body>";
yueee_yt 0:e489b051cf96 18 _soap_footer+="</transport>";
yueee_yt 0:e489b051cf96 19 _soap_footer+="</ns2:dataRQ>";
yueee_yt 0:e489b051cf96 20 _soap_footer+="</soapenv:Body>";
yueee_yt 0:e489b051cf96 21 _soap_footer+="</soapenv:Envelope>";
yueee_yt 0:e489b051cf96 22 _soap_footer+="\r\n\r\n";
yueee_yt 0:e489b051cf96 23 }
yueee_yt 0:e489b051cf96 24
yueee_yt 0:e489b051cf96 25 int FIAP::post(struct fiap_element* v, unsigned int esize) {
yueee_yt 0:e489b051cf96 26 HTTPClient http;
yueee_yt 0:e489b051cf96 27 int i;
yueee_yt 0:e489b051cf96 28 char requestBuffer[50];
yueee_yt 0:e489b051cf96 29 string _date_time;
yueee_yt 0:e489b051cf96 30 string _soap_text=_soap_header;
yueee_yt 0:e489b051cf96 31 for (i=0; i<esize; i++) {
yueee_yt 0:e489b051cf96 32 strftime(&requestBuffer[0],50,"%Y-%m-%dT%H:%M:%S.0000000",v[i].t);
yueee_yt 0:e489b051cf96 33 _soap_text += "<point id=\"";
yueee_yt 0:e489b051cf96 34 _soap_text += _fiap_id_prefix;
yueee_yt 0:e489b051cf96 35 _soap_text += v[i].cid;
yueee_yt 0:e489b051cf96 36 _soap_text += "\">";
yueee_yt 0:e489b051cf96 37 _soap_text += "<value time=\"";
yueee_yt 0:e489b051cf96 38 _soap_text += requestBuffer;
yueee_yt 0:e489b051cf96 39 _soap_text += v[i].timezone;
yueee_yt 0:e489b051cf96 40 _soap_text += "\">";
yueee_yt 0:e489b051cf96 41 _soap_text += v[i].value;
yueee_yt 0:e489b051cf96 42 _soap_text += "</value>";
yueee_yt 0:e489b051cf96 43 _soap_text += "</point>";
yueee_yt 0:e489b051cf96 44 }
yueee_yt 0:e489b051cf96 45 _soap_text += _soap_footer;
yueee_yt 0:e489b051cf96 46 if(debug_mode){
yueee_yt 0:e489b051cf96 47 printf(_soap_text.c_str());
yueee_yt 0:e489b051cf96 48 printf("<<< Request(end)\n");
yueee_yt 0:e489b051cf96 49 }
yueee_yt 0:e489b051cf96 50 http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
yueee_yt 0:e489b051cf96 51 http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/data\"");
yueee_yt 0:e489b051cf96 52 HTTPText InData;
yueee_yt 0:e489b051cf96 53 InData.set(_soap_text.c_str());
yueee_yt 0:e489b051cf96 54 HTTPText OutData;
yueee_yt 0:e489b051cf96 55 HTTPResult r = http.post(_fiap_storage.c_str(),InData,&OutData);
yueee_yt 0:e489b051cf96 56 if (r==HTTP_PROCESSING) {
yueee_yt 0:e489b051cf96 57 if (debug_mode)printf("Processing \n");
yueee_yt 0:e489b051cf96 58 return -1;
yueee_yt 0:e489b051cf96 59 }
yueee_yt 0:e489b051cf96 60 if (r==HTTP_PARSE) {
yueee_yt 0:e489b051cf96 61 if (debug_mode) printf("URI Parse error \n");
yueee_yt 0:e489b051cf96 62 return -1;
yueee_yt 0:e489b051cf96 63 }
yueee_yt 0:e489b051cf96 64 if (r==HTTP_DNS) {
yueee_yt 0:e489b051cf96 65 if (debug_mode) printf("Could not resolve name\n");
yueee_yt 0:e489b051cf96 66 return -1;
yueee_yt 0:e489b051cf96 67 }
yueee_yt 0:e489b051cf96 68 if (r==HTTP_PRTCL) {
yueee_yt 0:e489b051cf96 69 if (debug_mode)printf("Protocol error\n");
yueee_yt 0:e489b051cf96 70 return -1;
yueee_yt 0:e489b051cf96 71 }
yueee_yt 0:e489b051cf96 72 if (r==HTTP_NOTFOUND) {
yueee_yt 0:e489b051cf96 73 if (debug_mode)printf("HTTP 404 Error\n");
yueee_yt 0:e489b051cf96 74 return -1;
yueee_yt 0:e489b051cf96 75 }
yueee_yt 0:e489b051cf96 76 if (r==HTTP_REFUSED) {
yueee_yt 0:e489b051cf96 77 if (debug_mode) printf("HTTP 403 Error \n");
yueee_yt 0:e489b051cf96 78 return -1;
yueee_yt 0:e489b051cf96 79 }
yueee_yt 0:e489b051cf96 80 if (r==HTTP_ERROR) {
yueee_yt 0:e489b051cf96 81 if (debug_mode)printf("HTTP xxx error \n");
yueee_yt 0:e489b051cf96 82 return -1;
yueee_yt 0:e489b051cf96 83 }
yueee_yt 0:e489b051cf96 84 if (r==HTTP_TIMEOUT) {
yueee_yt 0:e489b051cf96 85 if (debug_mode)printf("Connection timeout\n");
yueee_yt 0:e489b051cf96 86 return -1;
yueee_yt 0:e489b051cf96 87 }
yueee_yt 0:e489b051cf96 88 if (r==HTTP_CONN) {
yueee_yt 0:e489b051cf96 89 if (debug_mode)printf("Connection error\n");
yueee_yt 0:e489b051cf96 90 return -1;
yueee_yt 0:e489b051cf96 91 }
yueee_yt 0:e489b051cf96 92
yueee_yt 0:e489b051cf96 93 return 0;
yueee_yt 0:e489b051cf96 94 }