2016-03-31 10 views
0

Ich habe Tutorials für zwei Tage gelesen und ich kann wirklich nicht verstehen, was meine Möglichkeiten sind. Ich habe eine Maschine mit HMI, die Webserver ausführt (ich weiß nicht, welche Art von Webserver das ist). Ich kann HMI-Tags Werte mit POST-Anfrage mit JSON-Daten zugreifen. Das rquest Beispiel so aussehenPost Anfrage mit JSON Daten Cross-Domain

$(document).ready(function() {  
    var data0 = {"getTags":["Start_dav","CutON","run_rot_actual"],"includeTagMetadata":true};  
    var json = JSON.stringify(data0); 

      $.ajax({ 
       url: "http://ipaddress/tagbatch", 
       type: "POST", 
       dataType: "json", 
       data: json, 

Die Antwort json Daten vorhanden sind.

Das Problem ist natürlich in Cross-Domain-Politik. Ich habe keine Kontrolle über die Maschine und es gibt keine Möglichkeit, CORS einzurichten. Ich habe über Proxy, Iframe und YQL-Lösungen gelesen, aber wie ich verstehe, kann ich JSON-Daten mit diesen Problemumgehungen senden. Gibt es eine Möglichkeit, Post-Anfrage mit JSON Cross-Domain zu senden?

Vielen Dank für Ihre Hilfe

Antwort

0

Ich fand eine Lösung. Ich verwende php curl zum Senden einer Anfrage. Hier

ist der Arbeitscode:

$data = array("getTags" => array("Var1","Var2"), "includeTagMetadata" => false);                  
$data_string = json_encode($data); 
$agent= 'Mozilla/5.0 (Windows; U;Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9'; 
//open connection 
$ch = curl_init(); 
$f = fopen('request.txt', 'w'); //writes headers to this file 
//set the url, number of POST vars, POST data 
curl_setopt($ch,CURLOPT_URL,"domainipaddress"); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string); 
$tmpfname = dirname(__FILE__).'/cookie.txt'; //saves the cookie from server 
curl_setopt($ch, CURLOPT_COOKIEJAR, $tmpfname); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $tmpfname); 
curl_setopt($ch, CURLOPT_ENCODING, ''); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_STDERR, $f); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_FORBID_REUSE, false);                  
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                  
    'Content-Type: application/json',                     
    'Content-Length: ' . strlen($data_string), 
     'Connection: keep-alive', 
     "Keep-Alive: 300" 
    )                  
); 

//execute post 
$result = curl_exec($ch); 
$headers = curl_getinfo($ch); 
fclose($f);