【问题标题】:Making a get request with a url that has special characters使用具有特殊字符的 url 发出获取请求
【发布时间】:2014-12-30 11:25:58
【问题描述】:

我正在尝试提出这个请求

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

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

url 中的# 必须作为消息本身的一部分保留在那里。

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

我怎样才能使获取请求工作?

【问题讨论】:

  • 尝试text=".urlencode(url)."#&password,这样您的短信文本将在请求中正确转义。

标签: php get query-string


【解决方案1】:

是的,# 字符表示 URL 中的 片段,因此现在实际上忽略了之后的部分。您需要正确转义它,例如这样:

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

Docs here on `http_build_query'.

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

【讨论】:

    【解决方案2】:

    这应该工作

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

    因为#%23

    【讨论】:

    • 虽然这解决了问题中特定 URL 的问题,但这并不是他所遇到问题的根本解决方案。我非常怀疑文本是否被硬编码为始终相同。
    • 让向导知道#%23。谢谢。 :)
    猜你喜欢
    • 1970-01-01
    • 2015-05-28
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 2014-08-02
    相关资源
    最近更新 更多