2014-11-20 146 views
0

是我第一次使用stackoverflow。使用cURL或socket_create發送自定義HTTP POST請求

我有一個問題。 我嘗試使用的fsockopen發送此HTTP請求:

POST /cgi_dte/UPL/DTEUpload HTTP/1.0 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/ms-excel, application/msword, */* 
Referer: {url} 
Accept-Language: es-cl 
Content-Type: multipart/form-data: boundary=9022632e1130lc4 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4) 
Content-Length: {lenght} 
Connection: Keep-Alive 
Cache-Control: no-cache 
Cookie: TOKEN={token} 

--9022632e1130lc4 
Content-Disposition: form-data; name="{ndata0}" 
Content-Type: text/plain; charset=US-ASCII 
Content-Transfer-Encoding: 8Bit 

{data} 
--9022632e1130lc4 
Content-Disposition: form-data; name="{ndata1}" 
Content-Type: text/plain; charset=US-ASCII 
Content-Transfer-Encoding: 8Bit 

{data} 
--9022632e1130lc4 
Content-Disposition: form-data; name="{ndata2}" 
Content-Type: text/plain; charset=US-ASCII 
Content-Transfer-Encoding: 8Bit 

{data} 
--9022632e1130lc4 
Content-Disposition: form-data; name="{ndata3}" 
Content-Type: text/plain; charset=US-ASCII 
Content-Transfer-Encoding: 8Bit 

{data} 
--9022632e1130lc4 
Content-Disposition: form-data; name="{filename}"; filename="{file.ext}" 
Content-Type: application/octet-stream 
Content-Transfer-Encoding: binary 

{xml} 

--9022632e1130lc4-- 

' 

但是PHP顯示此消息:

警告:的fsockopen():php_network_getaddresses:的getaddrinfo失敗:產品名稱或服務/ SRV不知道/第81行的http/modfe/sube_envio_y.php

警告:fsockopen():無法在/ srv中連接到ssl://maullin.sii.cl:443(php_network_getaddresses:getaddrinfo失敗:名稱或服務未知) 81線上的/http/modfe/sube_envio_y.php

的PHP代碼:

$host = "ssl://{url}"; 
$port = 443; 

$fp = fsockopen($host, $port, $errno, $errstr, 10); 

if (!$fp) { 
    return false; 
} 
fputs($fp, $string); // <---- $string: the custom HTTP request 
stream_set_timeout($fp, 20); 
$data = ""; 
$status = socket_get_status($fp); 
while(!feof($fp) && !$status['timed_out']) { 
    $data .= fgets($fp, 1024); 
    $status = socket_get_status($fp); 
} 
fclose($fp); 

可以創建和捲曲或socket_create()發送這個請求?

在php中存在其他方法嗎?

PD:我的英語不好。打擾一下。

回答

0

錯誤消息「名稱或服務未知」表示您的腳本無法從其配置的DNS服務器解析域maullin.sii.cl後面的IP地址。

根據您的環境,您可能需要配置代理才能進入公共互聯網,或者 - 如果腳本嘗試聯繫它自己的主機 - 請改用localhost。

3

請注意,該網址不應該包含路徑,因爲唯一有效的值是主機,即www.yourdomain.com。而不是像www.yourdomain.com/1/demo.php