使用具有特殊字符的URL发出get请求

时间:2014-12-30 11:25:58

标签: php get query-string

我正在尝试提出此请求

fopen("http://192.168.0.116:9090/sendsms?phone=4456666&text=url#&password=","r");

从我的Android设备发送短信,但我似乎无法成功发送消息,我怀疑#使事情变得复杂。

网址中的#必须作为邮件本身的一部分保留在那里。

phone是电话号码,text是短信。

如何让get请求有效?。

2 个答案:

答案 0 :(得分:2)

是的,#字符表示网址中的片段,因此此后的部分实际上会被忽略。你需要正确地逃避它,例如:

$myUrl = 'http://192.168.0.116:9090/sendsms?'.http_build_query([
    'phone' => '4456666',
    'text' => 'url#',
    'password' => '',
]);

Docs here on `http_build_query'

您还可以使用urlencode正确转义单个值。

答案 1 :(得分:1)

这将起作用

fopen("http://192.168.0.116:9090/sendsms?phone=4456666&text=url%23&password=","r");

#%23