我尝试将表单提交到远程服务器:http://openconvert.clarin.inl.nl/openconvert/tagger#text,因为您可以看到所需的文件是input
和format
,操作网址是http://openconvert.clarin.inl.nl/openconvert/text/
,所以我在php中尝试以下内容:
<?php
function do_post_request($url, $data, $optional_headers = null)
{
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
$remoteurl="http://openconvert.clarin.inl.nl/openconvert/text";
$rawdata=array(
'input'=>'test',
'format'=>'text');
$data=http_build_query($rawdata, '', '&'); //flags_, myvar_
var_dump($data);
echo "<br />";
echo do_post_request($remoteurl,$data,'Content-Type: text/html');
?>
我不知道为什么服务器找不到我的数据?
输出结果为:
string(26) "input=test&format=text"
<br /><?xml version="1.0" encoding="UTF-8"?>
<error>Insufficient parameters. Required parameters: input, format</error>
答案 0 :(得分:0)
可能还有其他问题,但http_build_query中的&
值肯定是错误的。您没有将您的urlencoded数据嵌入到html文档中,因此您不应该使用html-escape&符号。用以下内容替换该行:
http_build_query($rawdata, '', '&');
应该更好,但可能不是你解决方案的100%。
P.S。:永远不要使用@
。您正在抑制应该看到的实际错误。