【问题标题】:How can I send a POST request with spaces?如何发送带有空格的 POST 请求?
【发布时间】:2015-05-19 19:05:06
【问题描述】:

我正在尝试将输入从编辑文本发送到 PHP。如果我发送的东西没有空格,它可以正常工作,但会因空格而崩溃并说:

非法字符

...指的是空间。

显然,这是正确引用引号的问题,但由于某种原因,我无法正确理解。

在哪里添加引号?

创建 URL 时是否使用 Java?

http://example.com/android/project_group_notes_details.php?course=\'"+sessionCourse+"\'";

还是在创建变量时?

String sessionCouse = "\'Software Development With Spaces\'";

还是以某种方式在服务器端完成?

【问题讨论】:

    标签: java php android post


    【解决方案1】:

    以编程方式与后端服务器通信时,您应该使用 URL 编码来正确编码您的输入:

    String fullURL = "http://example.com/android/project_group_notes_details.php?course=\'"+ URLEncoder.encode(sessionCouse, "UTF-8") + "\'";
    

    【讨论】:

    • 似乎产生“ course='Software+Systems+Development' ”,即使数据库中有“软件系统开发”结果,也不会返回任何结果。
    • URLEncoder 的目的就是做到这一点,将字符串编码为有效的 URL:s。在这里查看更多信息:stackoverflow.com/questions/10786042/…
    【解决方案2】:

    标准浏览器将输入地址栏中的任何空格替换为%20; HTML 的 space 字符。

    HTTP 不会这样做,浏览器会这样做,这意味着您有两种选择:

    1. 创建一个函数来接收一个字符串并将所有空格替换为%20
    2. 手动将空格替换为%20

    例如:

    String sessionCouse = "\'Software Development With Spaces\'";
    

    应该是

    String sessionCouse = "\'Software%20Development%20With%20Spaces\'";
    

    【讨论】:

    • 如果我想再次将 %20 转换为空格,我应该使用正则表达式吗?
    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 2019-03-15
    • 2018-06-29
    • 1970-01-01
    • 2017-03-28
    • 2018-03-12
    • 1970-01-01
    • 2011-04-12
    相关资源
    最近更新 更多