Salve a tutti! Sono Stefano.
Ho una rete locale nella quale ho un Server, altri computer e il mio computer.
Ho bisogno di effettuare richieste HTTP GET al Server, che mi dovrebbe rispondere con una pagina di XML o JSON. Il mio problema è che se io da Browser (Chrome e Internet Explorer) apro "pc67c:8080/?cmd=readmachinetext" il server mi risponde correttamente mostrandomi la mia pagina di tag XML:
2013-10-22_091111.jpg
Allora io pensavo di fare una richiesta di questo tipo:
codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Richiesta di variabili XML</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
// Accepts a url and a callback function to run.
function requestX() {
// Indirizzo pagina
var url = "http://cosmopanelz:8080/?cmd=readmachinetext";
var request = $.ajax({
url: url,
datatype: "xml",
type: "GET"
});
request.done(function (xmlData) {
window.alert("got it!");
Elem = document.getElementsByClassName("setpoint");
for (I = 0; I < Elem.length; I++) {
document.getElementsByName(Elem[I].name)[0].value = $(xmlData).find(Elem[I].name).text();
}
});
request.fail(function (jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
}
</script>
</head>
<body>
<input type="button" value="Vai!" onclick="requestX()" />
<br /><br />
<span>MAS197b030 </span><input type="text" class="setpoint" name="MAS197b030"/>
<br /><br />
<span>MAS197b056 </span><input type="text" class="setpoint" name="MAS197b056"/>
<br /><br />
<span>MAS197b078 </span><input type="text" class="setpoint" name="MAS197b078"/>
<br /><br />
<span>MAS197b209 </span><input type="text" class="setpoint" name="MAS197b209"/>
<br /><br />
<span>MAS197b223 </span><input type="text" class="setpoint" name="MAS197b223"/>
<br /><br />
</body>
</html>
Che semplicemente alla pressione di un bottone fa la richiesta al Server, pesca le variabili XML dalla risposta e le mette nei campi di input corrispondenti. Sono sicuro della correttezza del codice perché puntando una pagina XML con le stesse variabili nella root dove ho salvato questa pagina, quindi in locale, funziona correttamente. Se invece, come nell'esempio, punto il mio server non ottengo risposta e la funzione cade in errore "Request: failure".
Sniffando sul Server ho tirato fuori le richieste che gli arrivano, nel caso vengano fatte con il Browser:
codice:
2013/10/14 13:58:14 dato arrivato: 2013/10/14 13:58:14 GET /?cmd=readmachinetext HTTP/1.1
Host: pc67c:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
If-Modified-Since: Fri, 11 Oct 2013 18:48:47 GMT
GET
HTTP/1.0 200 OK
Date: Mon, 14 Oct 2013 13:58:14 GMT
Server: Server
MIME-version: 1.0
Content-type: text/plain
Last-modified: Mon, 14 Oct 2013 13:58:14 GMT
Connection: keep-alive
Content-length: 20745
o nel caso vengano fatte con la mia funzione:
codice:
2013/10/14 14:09:14 dato arrivato:
2013/10/14 14:09:14 GET /?cmd=readmachinetext HTTP/1.1
Host: pc67c:8080
Connection: keep-alive
Origin: http://localhost:58751
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
Accept: */*
Referer: http://localhost:58751/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
If-Modified-Since: Mon, 14 Oct 2013 13:58:14 GMT
GET
HTTP/1.0 200 OK
Date: Mon, 14 Oct 2013 14:09:14 GMT
Server: Server
MIME-version: 1.0
Content-type: text/plain
Last-modified: Mon, 14 Oct 2013 14:09:14 GMT
Connection: keep-alive
Content-length: 20745
Questo è quanto. Qualcuno sa dirmi perchè col browser ottengo risposta e con la richiesta fatta dalla mia funzione non ottengo risposta?
Grazie a tutti per la collaborazione! Spero di aver dato abbastanza elementi.