Võrgurakenduste protokollid 1: erinevus redaktsioonide vahel
Mine navigeerimisribale
Mine otsikasti
Resümee puudub |
|||
| 31. rida: | 31. rida: | ||
xmlquerybuf[i]=0; | xmlquerybuf[i]=0; | ||
</pre> | </pre> | ||
== Json == | |||
JSON details and official spec: | |||
* http://en.wikipedia.org/wiki/JSON | |||
* www.json.org | |||
* http://tools.ietf.org/html/rfc4627 | |||
JSON-RPC: http://json-rpc.org/wiki/specification | |||
== xml-rpc == | == xml-rpc == | ||
| 53. rida: | 63. rida: | ||
</pre> | </pre> | ||
== SOAP == | == SOAP == | ||
Redaktsioon: 23. september 2009, kell 01:46
Get and post
GET: all data sent is in the headers & URL. If your form has METHOD="GET" in its FORM tag, your CGI program will receive the encoded form input in the environment variable QUERY_STRING.
POST: when sending, after headers comes text. If your form has METHOD="POST" in its FORM tag, your CGI program will receive the encoded form input on stdin. The server will NOT send you an EOF on the end of the data, instead you should use the environment variable CONTENT_LENGTH to determine how much data you should read from stdin.
Read:
Post answer reading example:
if (getenv("CONTENT_LENGTH") == NULL ||
sscanf(getenv("CONTENT_LENGTH"), "%d", &cl) != 1) {
data_error(NULL,"bad http format or missing content length received");
return 1;
}
// Create space for content:
xmlquerybuf = malloc(cl + 1);
if (xmlquerybuf == NULL) {
data_error(NULL,"cannot malloc for http request: bad content length?");
return 1;
}
// Read content:
c='a';
for(i=0; i<cl && c!=EOF; i++) {
c=fgetc(stdin);
xmlquerybuf[i]=c;
}
xmlquerybuf[i]=0;
Json
JSON details and official spec:
JSON-RPC: http://json-rpc.org/wiki/specification
xml-rpc
Read: http://www.xmlrpc.com/
Call example:
POST /RPC2 HTTP/1.0
User-Agent: Frontier/5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: text/xml
Content-length: 181
<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param> <value><i4>41</i4></value> </param>
</params>
</methodCall>
SOAP
Read in this order: