当前位置: 首页 > 面试题库 >

PHP中的JSON POST请求解析

林富
2023-03-14
问题内容

我已经在Java中生成了一个包含JSON对象的HTMLPost请求,并希望在PHP中对其进行解析。

public static String transferJSON(JSONObject j) {
    HttpClient httpclient= new DefaultHttpClient();
    HttpResponse response;
    HttpPost httppost= new HttpPost(SERVERURL);
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);  
    nameValuePairs.add(new BasicNameValuePair("json", j.toString()));

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    response = httpclient.execute(httppost);  
}

并在服务器上

<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

  // input = "json=%7B%22locations%22%3A%5B%7B%22..."
  $input = file_get_contents('php://input');

  // jsonObj is empty, not working
  $jsonObj = json_decode($input, true);

我猜这是因为JSON特殊字符已编码。

json_decode返回空响应

知道为什么吗?


问题答案:

实际上application/json,您不是在发布实体,而是在发布具有application/x-www-form- urlencoded单个值对json =(encoded json)的HTTP表单实体()。

代替

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);  
nameValuePairs.add(new BasicNameValuePair("json", j.toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

尝试

 httppost.setEntity(new StringEntity(j.toString(),"application/json","UTF-8"));


 类似资料:
  • 问题内容: 进行Ajax调用时,将contentType设置为application / json而不是默认的x-www-form- urlencoded时,服务器端(在PHP中)无法获取post参数。 在以下工作示例中,如果我在ajax请求中将contentType设置为“ application / json”,则PHP $ _POST将为空。为什么会这样?如何在PHP中正确处理content

  • 问题内容: 我正在用PHP执行两个curl请求。它们的外观如下: 他们正在工作,但有时第二个curl post请求未执行。 我想同时执行这两个请求。 我怎样才能做到这一点?请注意,他们在邮递区中采取不同的选择。 谢谢你的帮助! 问题答案: 因此,您要做的是异步执行cUrl请求。 因此,您将需要一个用于php的异步/并行处理库。 php的著名线程库之一是 您首先需要获取dll / so文件并将其保存

  • 问题内容: 由于php.net上的SOAP手册不是很友好,并且我找不到任何好的示例,因此我将在此处发布我的问题。 如何创建如下所示的PHP SOAP请求? 请注意: 有用户/通过身份验证 SSL连接 任何建议/链接/示例,不胜感激。 问题答案: 经过测试,可以正常工作! 使用https,用户名和密码

  • 本文向大家介绍全面解析iOS中同步请求、异步请求、GET请求、POST请求,包括了全面解析iOS中同步请求、异步请求、GET请求、POST请求的使用技巧和注意事项,需要的朋友参考一下 先给大家分别介绍下iOS中同步请求、异步请求、GET请求、POST所代表的意思,然后在逐一通过实例给大家介绍。 1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进

  • 本文向大家介绍PHP模拟http请求的方法详解,包括了PHP模拟http请求的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP模拟http请求的方法。分享给大家供大家参考,具体如下: 方法一:利用php的socket编程来直接给接口发送数据来模拟post的操作。 建立两个文件post.php,getpost.php post.php内容如下: getpost.php的内容如下

  • 问题内容: 我正在向node.js发送带有以下请求的凭据JSON对象: 在服务器端,我想将提交的凭据加载到JSON对象中,以进一步使用它。 但是,我不知道如何从req对象中获取JSON … (我的函数(req,res)中有一个调度程序,将req进一步传递给控制器​​,所以我不想使用.on(’data’,…)函数) 问题答案: 在服务器端,您将接收jQuery数据作为请求参数,而不是JSON。如果您