FIAPライブラリ 構造体の内容が変わっています
Dependents: temp_FIAP temp_FIAP_fetch tepco_demand BlueUSB_f_IEEE1888 ... more
fiap.cpp@0:d34a9148b19e, 2012-08-20 (annotated)
- Committer:
- yueee_yt
- Date:
- Mon Aug 20 00:40:00 2012 +0000
- Revision:
- 0:d34a9148b19e
- Child:
- 2:2ba00be13585
Ver2.0?beeta
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yueee_yt | 0:d34a9148b19e | 1 | #include "fiap.h" |
yueee_yt | 0:d34a9148b19e | 2 | #include "mbed.h" |
yueee_yt | 0:d34a9148b19e | 3 | #include "stdio.h" |
yueee_yt | 0:d34a9148b19e | 4 | #include "spdomparser.hpp" |
yueee_yt | 0:d34a9148b19e | 5 | #include "spxmlnode.hpp" |
yueee_yt | 0:d34a9148b19e | 6 | #include "spxmlhandle.hpp" |
yueee_yt | 0:d34a9148b19e | 7 | |
yueee_yt | 0:d34a9148b19e | 8 | char outBuffer[1500+1]={0}; |
yueee_yt | 0:d34a9148b19e | 9 | // HTTPClient http; |
yueee_yt | 0:d34a9148b19e | 10 | |
yueee_yt | 0:d34a9148b19e | 11 | //HTTPText InData("text/html", 800); |
yueee_yt | 0:d34a9148b19e | 12 | // HTTPStream stream; |
yueee_yt | 0:d34a9148b19e | 13 | |
yueee_yt | 0:d34a9148b19e | 14 | char _soap_text[800]; |
yueee_yt | 0:d34a9148b19e | 15 | char uuid[37]; |
yueee_yt | 0:d34a9148b19e | 16 | //char str[50]; |
yueee_yt | 0:d34a9148b19e | 17 | //int yy,mo,dd,hh,mm,ss; |
yueee_yt | 0:d34a9148b19e | 18 | //char requestBuffer[50]; |
yueee_yt | 0:d34a9148b19e | 19 | //int i,ii,ll; |
yueee_yt | 0:d34a9148b19e | 20 | //HTTPResult r; |
yueee_yt | 0:d34a9148b19e | 21 | //FIAP::FIAP(string Storage,string PointSetId) { |
yueee_yt | 0:d34a9148b19e | 22 | FIAP::FIAP(char Storage[],char PointSetId[]) { |
yueee_yt | 0:d34a9148b19e | 23 | debug_mode=false; |
yueee_yt | 0:d34a9148b19e | 24 | strcpy(_fiap_storage,Storage); |
yueee_yt | 0:d34a9148b19e | 25 | strcpy(_fiap_id_prefix,PointSetId); |
yueee_yt | 0:d34a9148b19e | 26 | |
yueee_yt | 0:d34a9148b19e | 27 | strcpy(_soap_header,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); |
yueee_yt | 0:d34a9148b19e | 28 | strcat(_soap_header ,"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">"); |
yueee_yt | 0:d34a9148b19e | 29 | strcat(_soap_header , "<soapenv:Body>"); |
yueee_yt | 0:d34a9148b19e | 30 | strcat(_soap_header , "<ns2:dataRQ xmlns:ns2=\"http://soap.fiap.org/\">"); |
yueee_yt | 0:d34a9148b19e | 31 | strcat(_soap_header , "<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">"); |
yueee_yt | 0:d34a9148b19e | 32 | strcat(_soap_header , "<body>"); |
yueee_yt | 0:d34a9148b19e | 33 | strcat(_soap_header , "<pointSet id=\""); |
yueee_yt | 0:d34a9148b19e | 34 | strcat(_soap_header , _fiap_id_prefix); |
yueee_yt | 0:d34a9148b19e | 35 | strcat(_soap_header , "\">"); |
yueee_yt | 0:d34a9148b19e | 36 | |
yueee_yt | 0:d34a9148b19e | 37 | strcpy(_soap_footer,"</pointSet>"); |
yueee_yt | 0:d34a9148b19e | 38 | strcat(_soap_footer ,"</body>"); |
yueee_yt | 0:d34a9148b19e | 39 | strcat(_soap_footer ,"</transport>"); |
yueee_yt | 0:d34a9148b19e | 40 | strcat(_soap_footer,"</ns2:dataRQ>"); |
yueee_yt | 0:d34a9148b19e | 41 | strcat(_soap_footer,"</soapenv:Body>"); |
yueee_yt | 0:d34a9148b19e | 42 | strcat(_soap_footer,"</soapenv:Envelope>"); |
yueee_yt | 0:d34a9148b19e | 43 | strcat(_soap_footer,"\r\n\r\n"); |
yueee_yt | 0:d34a9148b19e | 44 | |
yueee_yt | 0:d34a9148b19e | 45 | strcpy(_soap_action,"\"http://soap.fiap.org/data\""); |
yueee_yt | 0:d34a9148b19e | 46 | } |
yueee_yt | 0:d34a9148b19e | 47 | |
yueee_yt | 0:d34a9148b19e | 48 | FIAP::FIAP(char Storage[]) { |
yueee_yt | 0:d34a9148b19e | 49 | //printf("start-fiap(fetch)\r\n"); |
yueee_yt | 0:d34a9148b19e | 50 | debug_mode=false; |
yueee_yt | 0:d34a9148b19e | 51 | //printf(Storage); |
yueee_yt | 0:d34a9148b19e | 52 | strcpy(_fiap_storage,Storage); |
yueee_yt | 0:d34a9148b19e | 53 | strcpy(_soap_header,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); |
yueee_yt | 0:d34a9148b19e | 54 | strcat(_soap_header , "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">"); |
yueee_yt | 0:d34a9148b19e | 55 | strcat(_soap_header , "<soapenv:Body>"); |
yueee_yt | 0:d34a9148b19e | 56 | strcat(_soap_header , "<ns2:queryRQ xmlns:ns2=\"http://soap.fiap.org/\">"); |
yueee_yt | 0:d34a9148b19e | 57 | strcat(_soap_header , "<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">"); |
yueee_yt | 0:d34a9148b19e | 58 | strcat(_soap_header , "<header>"); |
yueee_yt | 0:d34a9148b19e | 59 | //printf("start-fiap(fetch)2\r\n"); |
yueee_yt | 0:d34a9148b19e | 60 | |
yueee_yt | 0:d34a9148b19e | 61 | strcpy(_soap_footer,"</header>"); |
yueee_yt | 0:d34a9148b19e | 62 | strcat(_soap_footer,"</transport>"); |
yueee_yt | 0:d34a9148b19e | 63 | strcat(_soap_footer,"</ns2:queryRQ>"); |
yueee_yt | 0:d34a9148b19e | 64 | strcat(_soap_footer,"</soapenv:Body>"); |
yueee_yt | 0:d34a9148b19e | 65 | strcat(_soap_footer,"</soapenv:Envelope>"); |
yueee_yt | 0:d34a9148b19e | 66 | strcat(_soap_footer,"\r\n\r\n"); |
yueee_yt | 0:d34a9148b19e | 67 | strcpy(_soap_action,"\"http://soap.fiap.org/query\""); |
yueee_yt | 0:d34a9148b19e | 68 | // printf("start-fiap(fetch)-define-end\r\n"); |
yueee_yt | 0:d34a9148b19e | 69 | } |
yueee_yt | 0:d34a9148b19e | 70 | |
yueee_yt | 0:d34a9148b19e | 71 | int FIAP::fetch_last_data(struct fiap_element* v,unsigned int esize) { |
yueee_yt | 0:d34a9148b19e | 72 | HTTPClient http; |
yueee_yt | 0:d34a9148b19e | 73 | int i,ii,ll; |
yueee_yt | 0:d34a9148b19e | 74 | // char uuid[37]; |
yueee_yt | 0:d34a9148b19e | 75 | // char _soap_text[800]; |
yueee_yt | 0:d34a9148b19e | 76 | strcpy( _soap_text, _soap_header); |
yueee_yt | 0:d34a9148b19e | 77 | |
yueee_yt | 0:d34a9148b19e | 78 | sprintf(uuid,"%04x%04x-%04x-%04x-%04x-%04x%04x%04x",rand()%0x10000,rand()%0x10000,rand()%0x10000,rand()%1000|0x4000,rand()%0x1000|0x8000,rand()%0x10000,rand()%10000,(rand()+1)%0x10000); |
yueee_yt | 0:d34a9148b19e | 79 | //sprintf(uuid,"0a90f1fa-bdb4-48ff-87d3-661d2af6ff4c"); |
yueee_yt | 0:d34a9148b19e | 80 | |
yueee_yt | 0:d34a9148b19e | 81 | strcat( _soap_text , "<query id=\""); |
yueee_yt | 0:d34a9148b19e | 82 | strcat( _soap_text , uuid); |
yueee_yt | 0:d34a9148b19e | 83 | strcat( _soap_text , "\" type=\"storage\">"); |
yueee_yt | 0:d34a9148b19e | 84 | for (i=0; i<esize; i++) { |
yueee_yt | 0:d34a9148b19e | 85 | strcat(_soap_text , "<key id=\""); |
yueee_yt | 0:d34a9148b19e | 86 | strcat(_soap_text , v[i].cid); |
yueee_yt | 0:d34a9148b19e | 87 | strcat(_soap_text , "\" attrName=\"time\" select=\"maximum\"/>"); |
yueee_yt | 0:d34a9148b19e | 88 | } |
yueee_yt | 0:d34a9148b19e | 89 | strcat(_soap_text , "</query>"); |
yueee_yt | 0:d34a9148b19e | 90 | strcat(_soap_text , _soap_footer); |
yueee_yt | 0:d34a9148b19e | 91 | if (debug_mode) { |
yueee_yt | 0:d34a9148b19e | 92 | printf(_fiap_storage); |
yueee_yt | 0:d34a9148b19e | 93 | printf("\r\n"); |
yueee_yt | 0:d34a9148b19e | 94 | printf(_soap_text); |
yueee_yt | 0:d34a9148b19e | 95 | printf("<<< Request(end)\n"); |
yueee_yt | 0:d34a9148b19e | 96 | } |
yueee_yt | 0:d34a9148b19e | 97 | http.setRequestHeader("Content-Type","text/xml; charset=UTF-8"); |
yueee_yt | 0:d34a9148b19e | 98 | // http.setRequestHeader("SOAPAction","query"); |
yueee_yt | 0:d34a9148b19e | 99 | http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/query\""); |
yueee_yt | 0:d34a9148b19e | 100 | HTTPText InData("text/html", 800); |
yueee_yt | 0:d34a9148b19e | 101 | InData.set(_soap_text); |
yueee_yt | 0:d34a9148b19e | 102 | // HTTPText OutData("text/html", 2048); |
yueee_yt | 0:d34a9148b19e | 103 | HTTPStream stream; |
yueee_yt | 0:d34a9148b19e | 104 | // char outBuffer[1500+1]={0}; |
yueee_yt | 0:d34a9148b19e | 105 | stream.readNext((byte*)outBuffer,1500); |
yueee_yt | 0:d34a9148b19e | 106 | printf("post.start \n\r"); |
yueee_yt | 0:d34a9148b19e | 107 | // HTTPResult r = http.post(_fiap_storage,InData,&OutData); |
yueee_yt | 0:d34a9148b19e | 108 | HTTPResult r = http.post(_fiap_storage,InData,&stream); |
yueee_yt | 0:d34a9148b19e | 109 | printf("post.end \n\r"); |
yueee_yt | 0:d34a9148b19e | 110 | if (r==HTTP_PROCESSING) { |
yueee_yt | 0:d34a9148b19e | 111 | if (debug_mode)printf("Processing \n"); |
yueee_yt | 0:d34a9148b19e | 112 | return -1; |
yueee_yt | 0:d34a9148b19e | 113 | } |
yueee_yt | 0:d34a9148b19e | 114 | if (r==HTTP_PARSE) { |
yueee_yt | 0:d34a9148b19e | 115 | if (debug_mode) printf("URI Parse error \n"); |
yueee_yt | 0:d34a9148b19e | 116 | return -1; |
yueee_yt | 0:d34a9148b19e | 117 | } |
yueee_yt | 0:d34a9148b19e | 118 | if (r==HTTP_DNS) { |
yueee_yt | 0:d34a9148b19e | 119 | if (debug_mode) printf("Could not resolve name\n"); |
yueee_yt | 0:d34a9148b19e | 120 | return -1; |
yueee_yt | 0:d34a9148b19e | 121 | } |
yueee_yt | 0:d34a9148b19e | 122 | if (r==HTTP_PRTCL) { |
yueee_yt | 0:d34a9148b19e | 123 | if (debug_mode)printf("Protocol error\n"); |
yueee_yt | 0:d34a9148b19e | 124 | return -1; |
yueee_yt | 0:d34a9148b19e | 125 | } |
yueee_yt | 0:d34a9148b19e | 126 | if (r==HTTP_NOTFOUND) { |
yueee_yt | 0:d34a9148b19e | 127 | if (debug_mode)printf("HTTP 404 Error\n"); |
yueee_yt | 0:d34a9148b19e | 128 | return -1; |
yueee_yt | 0:d34a9148b19e | 129 | } |
yueee_yt | 0:d34a9148b19e | 130 | if (r==HTTP_REFUSED) { |
yueee_yt | 0:d34a9148b19e | 131 | if (debug_mode) printf("HTTP 403 Error \n"); |
yueee_yt | 0:d34a9148b19e | 132 | return -1; |
yueee_yt | 0:d34a9148b19e | 133 | } |
yueee_yt | 0:d34a9148b19e | 134 | if (r==HTTP_ERROR) { |
yueee_yt | 0:d34a9148b19e | 135 | if (debug_mode)printf("HTTP xxx error %d \n ",r); |
yueee_yt | 0:d34a9148b19e | 136 | return -1; |
yueee_yt | 0:d34a9148b19e | 137 | } |
yueee_yt | 0:d34a9148b19e | 138 | if (r==HTTP_TIMEOUT) { |
yueee_yt | 0:d34a9148b19e | 139 | if (debug_mode)printf("Connection timeout\n"); |
yueee_yt | 0:d34a9148b19e | 140 | return -1; |
yueee_yt | 0:d34a9148b19e | 141 | } |
yueee_yt | 0:d34a9148b19e | 142 | if (r==HTTP_CONN) { |
yueee_yt | 0:d34a9148b19e | 143 | if (debug_mode)printf("Connection error\n"); |
yueee_yt | 0:d34a9148b19e | 144 | return -1; |
yueee_yt | 0:d34a9148b19e | 145 | } |
yueee_yt | 0:d34a9148b19e | 146 | // printf("Responce(start)>>>\n"); |
yueee_yt | 0:d34a9148b19e | 147 | // printf(OutData.gets()); |
yueee_yt | 0:d34a9148b19e | 148 | // printf("<<< Response(end)\n"); |
yueee_yt | 0:d34a9148b19e | 149 | // return; |
yueee_yt | 0:d34a9148b19e | 150 | SP_XmlNodeList * points; |
yueee_yt | 0:d34a9148b19e | 151 | if (stream.readable()) { |
yueee_yt | 0:d34a9148b19e | 152 | if (debug_mode)printf("\n\r data Get Ok\n\r"); |
yueee_yt | 0:d34a9148b19e | 153 | SP_XmlDomParser parser; |
yueee_yt | 0:d34a9148b19e | 154 | outBuffer[stream.readLen()]=0; |
yueee_yt | 0:d34a9148b19e | 155 | parser.append(outBuffer,strlen(outBuffer)); |
yueee_yt | 0:d34a9148b19e | 156 | //stream.readNext((byte*)outBuffer,4096); |
yueee_yt | 0:d34a9148b19e | 157 | SP_XmlHandle rootHandle(parser.getDocument()->getRootElement()); |
yueee_yt | 0:d34a9148b19e | 158 | SP_XmlHandle transport = rootHandle.getChild(0).getChild(0).getChild(0); |
yueee_yt | 0:d34a9148b19e | 159 | SP_XmlElementNode * fiapError = transport.getChild("header").getChild("error").toElement(); |
yueee_yt | 0:d34a9148b19e | 160 | int yy,mo,dd,hh,mm,ss; |
yueee_yt | 0:d34a9148b19e | 161 | |
yueee_yt | 0:d34a9148b19e | 162 | char str[50]; |
yueee_yt | 0:d34a9148b19e | 163 | printf ("%s \n",transport.toElement()->getName()); |
yueee_yt | 0:d34a9148b19e | 164 | if (fiapError==NULL) { |
yueee_yt | 0:d34a9148b19e | 165 | SP_XmlElementNode * values =transport.getChild("body").toElement(); |
yueee_yt | 0:d34a9148b19e | 166 | points=(SP_XmlNodeList *)values->getChildren() ; |
yueee_yt | 0:d34a9148b19e | 167 | // points=values->getChildren(); |
yueee_yt | 0:d34a9148b19e | 168 | int j=points->getLength(); |
yueee_yt | 0:d34a9148b19e | 169 | if (debug_mode) printf("GetValues of No %d \n\r",j); |
yueee_yt | 0:d34a9148b19e | 170 | SP_XmlElementNode *data_point_node,*data_value_node; |
yueee_yt | 0:d34a9148b19e | 171 | SP_XmlCDataNode *data_value_cnode; |
yueee_yt | 0:d34a9148b19e | 172 | for (i=0; i<j; i++) { |
yueee_yt | 0:d34a9148b19e | 173 | SP_XmlHandle data_handle(points->get(i));//Point |
yueee_yt | 0:d34a9148b19e | 174 | data_point_node=data_handle.toElement(); |
yueee_yt | 0:d34a9148b19e | 175 | data_value_node=data_handle.getChild("value").toElement(); |
yueee_yt | 0:d34a9148b19e | 176 | data_value_cnode=data_handle.getChild("value").getChild(0).toCData(); |
yueee_yt | 0:d34a9148b19e | 177 | if (debug_mode) printf("PointID=%s \r\n",data_point_node->getAttrValue("id")); |
yueee_yt | 0:d34a9148b19e | 178 | if (debug_mode) printf("date=%s \r\n",data_value_node->getAttrValue("time")); |
yueee_yt | 0:d34a9148b19e | 179 | if (debug_mode) printf("data=%s \r\n",data_value_cnode->getText()); |
yueee_yt | 0:d34a9148b19e | 180 | //time_t second[50]={0}; |
yueee_yt | 0:d34a9148b19e | 181 | for (ii=0; ii<esize; ii++) { |
yueee_yt | 0:d34a9148b19e | 182 | if (strcmp(v[ii].cid,data_point_node->getAttrValue("id"))==0) { |
yueee_yt | 0:d34a9148b19e | 183 | sprintf(str,"%s",data_value_node->getAttrValue("time")); |
yueee_yt | 0:d34a9148b19e | 184 | ll=sscanf(str,"%d-%d-%dT%d:%d:%d.",&yy,&mo,&dd,&hh,&mm,&ss); |
yueee_yt | 0:d34a9148b19e | 185 | if (debug_mode)printf("date convert no %d (%d/%d/%d %d:%d:%d) \r\n",ll,yy,mo,dd,hh,mm,ss); |
yueee_yt | 0:d34a9148b19e | 186 | v[ii].year=yy; |
yueee_yt | 0:d34a9148b19e | 187 | v[ii].month=mo; |
yueee_yt | 0:d34a9148b19e | 188 | v[ii].day=dd; |
yueee_yt | 0:d34a9148b19e | 189 | v[ii].hour=hh; |
yueee_yt | 0:d34a9148b19e | 190 | v[ii].minute=mm; |
yueee_yt | 0:d34a9148b19e | 191 | v[ii].second=ss; |
yueee_yt | 0:d34a9148b19e | 192 | sprintf(v[ii].value,"%s",data_value_cnode->getText()); |
yueee_yt | 0:d34a9148b19e | 193 | } |
yueee_yt | 0:d34a9148b19e | 194 | } |
yueee_yt | 0:d34a9148b19e | 195 | } |
yueee_yt | 0:d34a9148b19e | 196 | } else { |
yueee_yt | 0:d34a9148b19e | 197 | printf("ERROR\n\r"); |
yueee_yt | 0:d34a9148b19e | 198 | } |
yueee_yt | 0:d34a9148b19e | 199 | } else { |
yueee_yt | 0:d34a9148b19e | 200 | if (debug_mode)printf("error\n\r"); |
yueee_yt | 0:d34a9148b19e | 201 | } |
yueee_yt | 0:d34a9148b19e | 202 | |
yueee_yt | 0:d34a9148b19e | 203 | return 0; |
yueee_yt | 0:d34a9148b19e | 204 | } |
yueee_yt | 0:d34a9148b19e | 205 | int FIAP::fetch_last_data(struct fiap_element *v) { |
yueee_yt | 0:d34a9148b19e | 206 | HTTPClient http; |
yueee_yt | 0:d34a9148b19e | 207 | int ll; |
yueee_yt | 0:d34a9148b19e | 208 | // char uuid[37]; |
yueee_yt | 0:d34a9148b19e | 209 | // char _soap_text[800]; |
yueee_yt | 0:d34a9148b19e | 210 | strcpy(_soap_text, _soap_header); |
yueee_yt | 0:d34a9148b19e | 211 | |
yueee_yt | 0:d34a9148b19e | 212 | sprintf(uuid,"%04x%04x-%04x-%04x-%04x-%04x%04x%04x",rand()%0x10000,rand()%0x10000,rand()%0x10000,rand()%1000|0x4000,rand()%0x1000|0x8000,rand()%0x10000,rand()%10000,(rand()+1)%0x10000); |
yueee_yt | 0:d34a9148b19e | 213 | //sprintf(uuid,"0a90f1fa-bdb4-48ff-87d3-661d2af6ff4c"); |
yueee_yt | 0:d34a9148b19e | 214 | strcat(_soap_text , "<query id=\""); |
yueee_yt | 0:d34a9148b19e | 215 | strcat(_soap_text , uuid); |
yueee_yt | 0:d34a9148b19e | 216 | strcat(_soap_text , "\" type=\"storage\">"); |
yueee_yt | 0:d34a9148b19e | 217 | strcat(_soap_text , "<key id=\""); |
yueee_yt | 0:d34a9148b19e | 218 | strcat(_soap_text , v->cid); |
yueee_yt | 0:d34a9148b19e | 219 | strcat(_soap_text , "\" attrName=\"time\" select=\"maximum\"/>"); |
yueee_yt | 0:d34a9148b19e | 220 | strcat(_soap_text , "</query>"); |
yueee_yt | 0:d34a9148b19e | 221 | strcat(_soap_text , _soap_footer); |
yueee_yt | 0:d34a9148b19e | 222 | if (debug_mode) { |
yueee_yt | 0:d34a9148b19e | 223 | printf("\r\n"); |
yueee_yt | 0:d34a9148b19e | 224 | printf(_fiap_storage); |
yueee_yt | 0:d34a9148b19e | 225 | printf("\r\n"); |
yueee_yt | 0:d34a9148b19e | 226 | printf(_soap_text); |
yueee_yt | 0:d34a9148b19e | 227 | printf("<<< Request(end)\n"); |
yueee_yt | 0:d34a9148b19e | 228 | } |
yueee_yt | 0:d34a9148b19e | 229 | http.setRequestHeader("Content-Type","text/xml; charset=UTF-8"); |
yueee_yt | 0:d34a9148b19e | 230 | // http.setRequestHeader("SOAPAction","query"); |
yueee_yt | 0:d34a9148b19e | 231 | http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/query\""); |
yueee_yt | 0:d34a9148b19e | 232 | HTTPText InData; |
yueee_yt | 0:d34a9148b19e | 233 | InData.set(_soap_text); |
yueee_yt | 0:d34a9148b19e | 234 | //HTTPText OutData("text/html", 2000); |
yueee_yt | 0:d34a9148b19e | 235 | // HTTPText OutData; |
yueee_yt | 0:d34a9148b19e | 236 | HTTPStream stream; |
yueee_yt | 0:d34a9148b19e | 237 | // char outBuffer[1500+1]; |
yueee_yt | 0:d34a9148b19e | 238 | stream.readNext((byte*)outBuffer,strlen(outBuffer)); |
yueee_yt | 0:d34a9148b19e | 239 | printf("post.start \n\r"); |
yueee_yt | 0:d34a9148b19e | 240 | //HTTPResult r = http.post(_fiap_storage,InData,&OutData); |
yueee_yt | 0:d34a9148b19e | 241 | HTTPResult r = http.post(_fiap_storage,InData,&stream); |
yueee_yt | 0:d34a9148b19e | 242 | printf("post.end \n\r"); |
yueee_yt | 0:d34a9148b19e | 243 | if (r==HTTP_PROCESSING) { |
yueee_yt | 0:d34a9148b19e | 244 | if (debug_mode)printf("Processing \n"); |
yueee_yt | 0:d34a9148b19e | 245 | return -1; |
yueee_yt | 0:d34a9148b19e | 246 | } |
yueee_yt | 0:d34a9148b19e | 247 | if (r==HTTP_PARSE) { |
yueee_yt | 0:d34a9148b19e | 248 | if (debug_mode) printf("URI Parse error \n"); |
yueee_yt | 0:d34a9148b19e | 249 | return -1; |
yueee_yt | 0:d34a9148b19e | 250 | } |
yueee_yt | 0:d34a9148b19e | 251 | if (r==HTTP_DNS) { |
yueee_yt | 0:d34a9148b19e | 252 | if (debug_mode) printf("Could not resolve name\n"); |
yueee_yt | 0:d34a9148b19e | 253 | return -1; |
yueee_yt | 0:d34a9148b19e | 254 | } |
yueee_yt | 0:d34a9148b19e | 255 | if (r==HTTP_PRTCL) { |
yueee_yt | 0:d34a9148b19e | 256 | if (debug_mode)printf("Protocol error\n"); |
yueee_yt | 0:d34a9148b19e | 257 | return -1; |
yueee_yt | 0:d34a9148b19e | 258 | } |
yueee_yt | 0:d34a9148b19e | 259 | if (r==HTTP_NOTFOUND) { |
yueee_yt | 0:d34a9148b19e | 260 | if (debug_mode)printf("HTTP 404 Error\n"); |
yueee_yt | 0:d34a9148b19e | 261 | return -1; |
yueee_yt | 0:d34a9148b19e | 262 | } |
yueee_yt | 0:d34a9148b19e | 263 | if (r==HTTP_REFUSED) { |
yueee_yt | 0:d34a9148b19e | 264 | if (debug_mode) printf("HTTP 403 Error \n"); |
yueee_yt | 0:d34a9148b19e | 265 | return -1; |
yueee_yt | 0:d34a9148b19e | 266 | } |
yueee_yt | 0:d34a9148b19e | 267 | if (r==HTTP_ERROR) { |
yueee_yt | 0:d34a9148b19e | 268 | if (debug_mode)printf("HTTP xxx error %d \n ",r); |
yueee_yt | 0:d34a9148b19e | 269 | return -1; |
yueee_yt | 0:d34a9148b19e | 270 | } |
yueee_yt | 0:d34a9148b19e | 271 | if (r==HTTP_TIMEOUT) { |
yueee_yt | 0:d34a9148b19e | 272 | if (debug_mode)printf("Connection timeout\n"); |
yueee_yt | 0:d34a9148b19e | 273 | return -1; |
yueee_yt | 0:d34a9148b19e | 274 | } |
yueee_yt | 0:d34a9148b19e | 275 | if (r==HTTP_CONN) { |
yueee_yt | 0:d34a9148b19e | 276 | if (debug_mode)printf("Connection error\n"); |
yueee_yt | 0:d34a9148b19e | 277 | return -1; |
yueee_yt | 0:d34a9148b19e | 278 | } |
yueee_yt | 0:d34a9148b19e | 279 | // printf("Responce(start)>>>\n"); |
yueee_yt | 0:d34a9148b19e | 280 | // printf(OutData.gets()); |
yueee_yt | 0:d34a9148b19e | 281 | // printf("<<< Response(end)\n"); |
yueee_yt | 0:d34a9148b19e | 282 | // return; |
yueee_yt | 0:d34a9148b19e | 283 | |
yueee_yt | 0:d34a9148b19e | 284 | SP_XmlNodeList * points; |
yueee_yt | 0:d34a9148b19e | 285 | if (stream.readable()) { |
yueee_yt | 0:d34a9148b19e | 286 | if (debug_mode)printf("\n\r data Get Ok\n\r"); |
yueee_yt | 0:d34a9148b19e | 287 | SP_XmlDomParser parser; |
yueee_yt | 0:d34a9148b19e | 288 | if (debug_mode)printf("stream readlen = %d \n\r",stream.readLen()); |
yueee_yt | 0:d34a9148b19e | 289 | |
yueee_yt | 0:d34a9148b19e | 290 | outBuffer[stream.readLen()]=0; |
yueee_yt | 0:d34a9148b19e | 291 | printf("check0\n\r"); |
yueee_yt | 0:d34a9148b19e | 292 | parser.append(outBuffer,strlen(outBuffer)); |
yueee_yt | 0:d34a9148b19e | 293 | printf("check1\n\r"); |
yueee_yt | 0:d34a9148b19e | 294 | |
yueee_yt | 0:d34a9148b19e | 295 | //stream.readNext((byte*)outBuffer,4096); |
yueee_yt | 0:d34a9148b19e | 296 | SP_XmlHandle rootHandle(parser.getDocument()->getRootElement()); |
yueee_yt | 0:d34a9148b19e | 297 | SP_XmlHandle transport = rootHandle.getChild(0).getChild(0).getChild(0); |
yueee_yt | 0:d34a9148b19e | 298 | SP_XmlElementNode * fiapError = transport.getChild("header").getChild("error").toElement(); |
yueee_yt | 0:d34a9148b19e | 299 | int yy,mo,dd,hh,mm,ss; |
yueee_yt | 0:d34a9148b19e | 300 | |
yueee_yt | 0:d34a9148b19e | 301 | char str[50]; |
yueee_yt | 0:d34a9148b19e | 302 | printf ("%s \n\r",transport.toElement()->getName()); |
yueee_yt | 0:d34a9148b19e | 303 | if (fiapError==NULL) { |
yueee_yt | 0:d34a9148b19e | 304 | SP_XmlElementNode * values =transport.getChild("body").toElement(); |
yueee_yt | 0:d34a9148b19e | 305 | points=(SP_XmlNodeList *)values->getChildren() ; |
yueee_yt | 0:d34a9148b19e | 306 | // points=values->getChildren(); |
yueee_yt | 0:d34a9148b19e | 307 | int j=points->getLength(); |
yueee_yt | 0:d34a9148b19e | 308 | if (debug_mode) printf("GetValues of No %d \n\r",j); |
yueee_yt | 0:d34a9148b19e | 309 | SP_XmlElementNode *data_point_node,*data_value_node; |
yueee_yt | 0:d34a9148b19e | 310 | SP_XmlCDataNode *data_value_cnode; |
yueee_yt | 0:d34a9148b19e | 311 | SP_XmlHandle data_handle(points->get(0));//Point |
yueee_yt | 0:d34a9148b19e | 312 | data_point_node=data_handle.toElement(); |
yueee_yt | 0:d34a9148b19e | 313 | data_value_node=data_handle.getChild("value").toElement(); |
yueee_yt | 0:d34a9148b19e | 314 | data_value_cnode=data_handle.getChild("value").getChild(0).toCData(); |
yueee_yt | 0:d34a9148b19e | 315 | if (debug_mode) printf("PointID=%s \r\n",data_point_node->getAttrValue("id")); |
yueee_yt | 0:d34a9148b19e | 316 | if (debug_mode) printf("date=%s \r\n",data_value_node->getAttrValue("time")); |
yueee_yt | 0:d34a9148b19e | 317 | if (debug_mode) printf("data=%s \r\n",data_value_cnode->getText()); |
yueee_yt | 0:d34a9148b19e | 318 | sprintf(str,"%s",data_value_node->getAttrValue("time")); |
yueee_yt | 0:d34a9148b19e | 319 | ll=sscanf(str,"%d-%d-%dT%d:%d:%d.",&yy,&mo,&dd,&hh,&mm,&ss); |
yueee_yt | 0:d34a9148b19e | 320 | if (debug_mode)printf("date convert no %d (%d/%d/%d %d:%d:%d) \r\n",ll,yy,mo,dd,hh,mm,ss); |
yueee_yt | 0:d34a9148b19e | 321 | v->year=yy; |
yueee_yt | 0:d34a9148b19e | 322 | v->month=mo; |
yueee_yt | 0:d34a9148b19e | 323 | v->day=dd; |
yueee_yt | 0:d34a9148b19e | 324 | v->hour=hh; |
yueee_yt | 0:d34a9148b19e | 325 | v->minute=mm; |
yueee_yt | 0:d34a9148b19e | 326 | v->second=ss; |
yueee_yt | 0:d34a9148b19e | 327 | sprintf(v->value,"%s", data_value_cnode->getText()); |
yueee_yt | 0:d34a9148b19e | 328 | } else { |
yueee_yt | 0:d34a9148b19e | 329 | printf("ERROR\n\r"); |
yueee_yt | 0:d34a9148b19e | 330 | } |
yueee_yt | 0:d34a9148b19e | 331 | } else { |
yueee_yt | 0:d34a9148b19e | 332 | if (debug_mode)printf("error\n\r"); |
yueee_yt | 0:d34a9148b19e | 333 | } |
yueee_yt | 0:d34a9148b19e | 334 | |
yueee_yt | 0:d34a9148b19e | 335 | return 0; |
yueee_yt | 0:d34a9148b19e | 336 | |
yueee_yt | 0:d34a9148b19e | 337 | } |
yueee_yt | 0:d34a9148b19e | 338 | |
yueee_yt | 0:d34a9148b19e | 339 | int FIAP::post(struct fiap_element* v, unsigned int esize) { |
yueee_yt | 0:d34a9148b19e | 340 | HTTPClient http; |
yueee_yt | 0:d34a9148b19e | 341 | int i; |
yueee_yt | 0:d34a9148b19e | 342 | char requestBuffer[50]; |
yueee_yt | 0:d34a9148b19e | 343 | // char _soap_text[800]; |
yueee_yt | 0:d34a9148b19e | 344 | strcpy(_soap_header,_soap_text); |
yueee_yt | 0:d34a9148b19e | 345 | for (i=0; i<esize; i++) { |
yueee_yt | 0:d34a9148b19e | 346 | sprintf(requestBuffer,"%04d-%02d-%02dT%02d:%02d:%02d.0000000",v[i].year,v[i].month,v[i].day,v[i].hour,v[i].minute,v[i].second); |
yueee_yt | 0:d34a9148b19e | 347 | strcat(_soap_text , "<point id=\""); |
yueee_yt | 0:d34a9148b19e | 348 | strcat(_soap_text , _fiap_id_prefix); |
yueee_yt | 0:d34a9148b19e | 349 | strcat( _soap_text , v[i].cid); |
yueee_yt | 0:d34a9148b19e | 350 | strcat( _soap_text, "\">"); |
yueee_yt | 0:d34a9148b19e | 351 | strcat( _soap_text , "<value time=\""); |
yueee_yt | 0:d34a9148b19e | 352 | strcat( _soap_text , requestBuffer); |
yueee_yt | 0:d34a9148b19e | 353 | strcat( _soap_text , v[i].timezone); |
yueee_yt | 0:d34a9148b19e | 354 | strcat( _soap_text , "\">"); |
yueee_yt | 0:d34a9148b19e | 355 | strcat( _soap_text , v[i].value); |
yueee_yt | 0:d34a9148b19e | 356 | strcat( _soap_text , "</value>"); |
yueee_yt | 0:d34a9148b19e | 357 | strcat( _soap_text , "</point>"); |
yueee_yt | 0:d34a9148b19e | 358 | } |
yueee_yt | 0:d34a9148b19e | 359 | strcat( _soap_text , _soap_footer); |
yueee_yt | 0:d34a9148b19e | 360 | if (debug_mode) { |
yueee_yt | 0:d34a9148b19e | 361 | printf(_soap_text); |
yueee_yt | 0:d34a9148b19e | 362 | printf("<<< Request(end)\n"); |
yueee_yt | 0:d34a9148b19e | 363 | } |
yueee_yt | 0:d34a9148b19e | 364 | http.setRequestHeader("Content-Type","text/xml; charset=UTF-8"); |
yueee_yt | 0:d34a9148b19e | 365 | http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/data\""); |
yueee_yt | 0:d34a9148b19e | 366 | // InData=new HTTPText(); |
yueee_yt | 0:d34a9148b19e | 367 | HTTPText InData; |
yueee_yt | 0:d34a9148b19e | 368 | InData.set(_soap_text); |
yueee_yt | 0:d34a9148b19e | 369 | HTTPText OutData; |
yueee_yt | 0:d34a9148b19e | 370 | HTTPResult r = http.post(_fiap_storage,InData,&OutData); |
yueee_yt | 0:d34a9148b19e | 371 | if (r==HTTP_PROCESSING) { |
yueee_yt | 0:d34a9148b19e | 372 | if (debug_mode)printf("Processing \n"); |
yueee_yt | 0:d34a9148b19e | 373 | return -1; |
yueee_yt | 0:d34a9148b19e | 374 | } |
yueee_yt | 0:d34a9148b19e | 375 | if (r==HTTP_PARSE) { |
yueee_yt | 0:d34a9148b19e | 376 | if (debug_mode) printf("URI Parse error \n"); |
yueee_yt | 0:d34a9148b19e | 377 | return -1; |
yueee_yt | 0:d34a9148b19e | 378 | } |
yueee_yt | 0:d34a9148b19e | 379 | if (r==HTTP_DNS) { |
yueee_yt | 0:d34a9148b19e | 380 | if (debug_mode) printf("Could not resolve name\n"); |
yueee_yt | 0:d34a9148b19e | 381 | return -1; |
yueee_yt | 0:d34a9148b19e | 382 | } |
yueee_yt | 0:d34a9148b19e | 383 | if (r==HTTP_PRTCL) { |
yueee_yt | 0:d34a9148b19e | 384 | if (debug_mode)printf("Protocol error\n"); |
yueee_yt | 0:d34a9148b19e | 385 | return -1; |
yueee_yt | 0:d34a9148b19e | 386 | } |
yueee_yt | 0:d34a9148b19e | 387 | if (r==HTTP_NOTFOUND) { |
yueee_yt | 0:d34a9148b19e | 388 | if (debug_mode)printf("HTTP 404 Error\n"); |
yueee_yt | 0:d34a9148b19e | 389 | return -1; |
yueee_yt | 0:d34a9148b19e | 390 | } |
yueee_yt | 0:d34a9148b19e | 391 | if (r==HTTP_REFUSED) { |
yueee_yt | 0:d34a9148b19e | 392 | if (debug_mode) printf("HTTP 403 Error \n"); |
yueee_yt | 0:d34a9148b19e | 393 | return -1; |
yueee_yt | 0:d34a9148b19e | 394 | } |
yueee_yt | 0:d34a9148b19e | 395 | if (r==HTTP_ERROR) { |
yueee_yt | 0:d34a9148b19e | 396 | if (debug_mode)printf("HTTP xxx error \n"); |
yueee_yt | 0:d34a9148b19e | 397 | return -1; |
yueee_yt | 0:d34a9148b19e | 398 | } |
yueee_yt | 0:d34a9148b19e | 399 | if (r==HTTP_TIMEOUT) { |
yueee_yt | 0:d34a9148b19e | 400 | if (debug_mode)printf("Connection timeout\n"); |
yueee_yt | 0:d34a9148b19e | 401 | return -1; |
yueee_yt | 0:d34a9148b19e | 402 | } |
yueee_yt | 0:d34a9148b19e | 403 | if (r==HTTP_CONN) { |
yueee_yt | 0:d34a9148b19e | 404 | if (debug_mode)printf("Connection error\n"); |
yueee_yt | 0:d34a9148b19e | 405 | return -1; |
yueee_yt | 0:d34a9148b19e | 406 | } |
yueee_yt | 0:d34a9148b19e | 407 | |
yueee_yt | 0:d34a9148b19e | 408 | return 0; |
yueee_yt | 0:d34a9148b19e | 409 | } |