Я провел некоторое исследование относительно использования file_get_content
с сообщением. И я также прочитал этот, который, честно говоря, не понимаю, так как я не знаком с PHP. Ниже мой PHP-код в получении моего json и использовал его для моего запроса ajax, используя methog GET
.:
<?php echo(file_get_contents("http://localhost:8001/" . $_GET["path"] . "?json=" . urlencode($_GET["json"]))); ?>
Теперь я использую метод POST
и я не знаю, как изменить свой PHP-код, чтобы опубликовать мои данные с моего javascript. Ниже приведены мои data
которые я хотел опубликовать в своем запросе url (это также то, что я использовал как json
в методе GET
):
{"SessionID":"9SQLF17XcFu0MTdj5n", "operation":"add", "transaction_date":"2011-7-28T00:00:00", "supplier_id":"10000000108", "wood_specie_id":"1", "lines": [{"...":"...","..":"..."},{"...":"...","..":"..."}], "scaled_by":"SCALED BY", "tallied_by":"TALLIED BY", "checked_by":"CHECKED BY", "total_bdft":"23.33", "final":"N"}
Мне просто нужно изменить этот код
echo(file_get_contents("http://localhost:8001/" . $_GET["path"] . "?json=" . urlencode($_GET["json"])));
с POST
для отправки моего сообщения мои данные.
EDIT: Мне нужно создать такой запрос:
http://localhost/jQueryStudy/RamagalHTML/processjson.php?path=getData/supplier?json={"SessionID":"KozebJ4SFqdqsJtRpG6t1o3uQxgoeLjT"%2C"dataType":"data"}
Вы можете передать контекст потока в качестве третьего аргумента file_get_contents
. С помощью контекста Stream вы можете влиять на то, как будет выполнен HTTP-запрос, например, вы можете изменить метод, добавить контент или произвольные заголовки.
file_get_contents($url, false, stream_context_create( array ( 'http' => array( 'method'=>'POST', 'header' => "Connection: close\r\nContent-Length: $data_len\r\n", 'content'=>$data_url ) ) ));
После каждого запроса PHP автоматически заполняет $http_response_header
который будет содержать всю информацию о запросе, например код состояния и прочее.
$data_url = http_build_query (array('json' => $_GET["json"])); $data_len = strlen ($data_url); echo file_get_contents("http://localhost:8001/" . $_GET["path"], false, stream_context_create( array ( 'http' => array( 'method'=>'POST', 'header' => "Connection: close\r\nContent-Length: $data_len\r\n", 'content'=>$data_url ) ) ));
Вам нужно cURL .
Пример:
$dataString = "firstName=John&lastname=Smith"; $ch = curl_init(); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,2); // number of variables curl_setopt($ch,CURLOPT_POSTFIELDS,$dataString); //execute post $result = curl_exec($ch); //close connection curl_close($ch);
Если я правильно понимаю вас (возможно, нет), вы должны использовать CURL.
CURL – это способ отправки запросов POST в PHP. (но это не единственный способ). Что вы делаете, это отправка данных методом GET
некоторые думают так, пожалуйста, прочитайте об этом, этот не будет работать из коробки
<?php $ch = curl_init("http://localhost:8001/" . $_GET["path"] ); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_POSTFIELDS, "json=".urlencode($_GET["json"])); curl_exec ($ch); curl_close ($ch); ?>