Отправлять данные с помощью file_get_content
Я провел некоторое исследование относительно использования 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
для отправки моего сообщения мои данные.
РЕДАКТИРОВАТЬ:
Мне нужно создать такой запрос:
http://localhost/jQueryStudy/RamagalHTML/processjson.php?path=getData/supplier?json={"SessionID":"KozebJ4SFqdqsJtRpG6t1o3uQxgoeLjT"%2C"dataType":"data"}
Ответы
Ответ 1
Вы можете передать контекст потока в качестве третьего аргумента в file_get_contents
. С помощью контекста Stream вы можете влиять на то, как будет выполнен запрос HTTP, например. вы можете изменить метод, добавить Контент или arbirtrary заголовки.
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
)
)
));
Ответ 2
Вам нужно 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);
Ответ 3
Если я понимаю вас правильно (я не знаю), вы должны использовать 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);
?>