簡體   English   中英

PHP發布請求以檢索JSON

[英]PHP post request to retrieve JSON

我正在嘗試編寫一些簡單的PHP代碼,它將發出一個post請求,然后從服務器檢索JSON結果。 這對我來說似乎很簡單,但下面的代碼根本沒有打開連接。

$port = 2057;
$path = "/validate/";
$request = "value1=somevalue&value2=somevalue&value3=somevalue";

$http_request  = "POST $path HTTP/1.0\r\n";
$http_request .= "Host: $server\r\n";
$http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
$http_request .= "Content-Length: " . strlen($request) . "\r\n";
$http_request .= "\r\n";
$http_request .= $request;

$response = '';

if( false == ( $fs = @fsockopen($server, $port) ) ) {
            die ('Could not open socket');
}

fwrite($fs, $http_request);

while ( !feof($fs) )
{
    $response .= fgets($fs, 1160);
}

fclose($fs);

此外,我嘗試了一種更簡單的方法:

$handle = fopen('http://localhost:2057/validate/?'.$request, "r");

要么

$response = file_get_contents('http://localhost:2057/validate/' . $request);

但這兩種方法都只是超時了。

我正在嘗試連接到我在Visual Studio中運行的開發服務器,所以我不確定這是否與超時/連接問題有關。

只要它們是用PHP構建的,就可以在這里打開任何建議。

有很多純PHP HTTP處理程序可能對你有用。

試試PEAR的HTTP_ClientZend_Http_Client ,你可以將它們與你的應用程序捆綁在一起。

如果您自己編寫死機,請嘗試使用 有一套全面的HTTP流選項可供選擇。

嘗試使用HTTP_Request2 ; 它不是標准的PHP,但您可以將它與您的應用程序一起分發,這樣您就不必擔心它是否已安裝。

以下是我用於將文檔POST到轉換服務器的類的片段; 你可以發布你喜歡的任何內容,並以類似的方式得到結果。

$request = new HTTP_Request2('http://whereveryouwant:80/foo/');
$request->setMethod(HTTP_Request2::METHOD_POST)
    ->setConfig('timeout', CONVERT_SERVER_TIMEOUT)
    ->setHeader('Content-Type', 'multipart/form-data')
    ->addPostParameter('outputFormat', $outputType);
$request->addUpload('inputDocument', $inputFile);
$result = $request->send();
if ($result->getStatus() == 200) {
    return $result->getBody();
} else {
    return false;
}

使用http擴展名編寫它可能更簡單:http: //fr.php.net/manual/en/function.http-post-data.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM