我有一个应用程序(检查点防火墙)
使用GET方法
从变量发送格式化URL以形成请求https://api.example.com/http/sendmsg?api_id=$APIID&user=
$USERNAME&password=$PASSWORD&to=$PHONE&text=$MESSAGE
我想要使用的网站是如何使用带有以下来源的POST方法的基本表单。
<html>
<form method="post">
Number:<input type="text" name="number"/><br/>
Message:<textarea cols="40" rows="4" name="message"></textarea><br/>
<input type="submit" value="send"/>
</form>
</html>
我可以在理由中尽可能多地更改URL的格式,因为您可以猜测这是发送短信。
有没有办法用POST方法格式化URL,或者创建一个可以翻译请求的中间网页?
谢谢
修改
所以这就是我想到的那种事情
$number = ($_GET["number"]);
$message = ($_GET["message"]);
//for testing the get method echo variables on screen
echo("Number: " . $number . "<br />");
echo("Message: " . $message . "<br />");
//use curl to post variables to second website
$vars = "number-" . $number . "&message=2 . message;
$ch = curl_init( '10.43.23.53' );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $vars);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec( $ch );
print_r(curl_getinfo($ch));
此脚本由网站托管,因此应用程序A可以使用其GET方法提供变量,脚本将通过post将其重新发布到应用程序B.但它不起作用,我没有从响应中得到任何结果?
答案 0 :(得分:1)
$apiKey = 'your-api-key-here';
$user = 'your-username-here';
$password = 'your-password-here';
$number = isset($_POST['number']) ? $_POST['number'] : null;
$message = isset($_GPOST['message']) ? $_POST['message'] : null;
$url = sprintf('https://api.example.com/http/sendmsg?api_id=%s&user= %s&password=%s&to=%s&text=%s',
$apiKey, $user, $password, urlencodee($message)
);
// validating message etc. left to OP
$response = file_get_contents($url);
答案 1 :(得分:0)
您将无法将POST作为GET发送,它们是不同的方法,并且POST要求使用GET请求中不可用的请求发送变量。
理论上,您可以创建一个中介,它接受初始GET请求并形成合适的POST请求并将其发送到目标服务器。实际执行此问题超出了本问题的范围。