我第一次参加stackoverflow。
我有问题。 我尝试使用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失败:第81行的/srv/http/modfe/sube_envio_y.php中未知名称或服务
警告:fsockopen():无法连接到第81行的/srv/http/modfe/sube_envio_y.php中的ssl://maullin.sii.cl:443(php_network_getaddresses:getaddrinfo失败:名称或服务未知)
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);
是否可以使用cURL或socket_create()创建并发送此请求?
在php中存在其他方法吗?
PD:我的英语不好。对不起。答案 0 :(得分:3)
请注意,网址不应包含路径,因为唯一有效的值是主机,即www.yourdomain.com。而不是像www.yourdomain.com/1/demo.php那样的东西
答案 1 :(得分:0)
错误消息&#34;名称或服务未知&#34;表示您的脚本无法从其配置的DNS服务器解析域maullin.sii.cl后面的IP地址。
根据您的环境,您可能需要配置代理以进入公共互联网,或者 - 如果脚本试图与其自己的主机联系 - 请改用localhost。