在发这个问题之前,我看了很多地方,所以如果它在另一个帖子上,我很抱歉,这只是我在这里的第二个问题,所以如果我没有正确地格式化这个问题,我很抱歉。
我创建了一个非常简单的web服务,它需要获取post值并返回一个JSON编码的数组。这一切都很好,直到我被告知需要发布内容类型为application/json的表单数据。从那以后,我不能从web服务返回任何值,这肯定与我如何过滤它们的post值有关。
基本上,在我的本地设置中,我创建了一个测试页面,它执行以下操作-
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
curl_setopt($curl, CURLOPT_URL, 'http://webservice.local/'); // Set the url path we want to call
$result = curl_exec($curl);
//see the results
$json=json_decode($result,true);
curl_close($curl);
print_r($json);
在webservice上,我有这样的功能(我已经删除了一些功能)-
<?php
header('Content-type: application/json');
/* connect to the db */
$link = mysql_connect('localhost','root','root') or die('Cannot connect to the DB');
mysql_select_db('webservice',$link) or die('Cannot select the DB');
if(isset($_POST['action']) && $_POST['action'] == 'login') {
$statusCode = array('statusCode'=>1, 'statusDescription'=>'Login Process - Fail');
$posts[] = array('status'=>$statusCode);
header('Content-type: application/json');
echo json_encode($posts);
/* disconnect from the db */
}
@mysql_close($link);
?>
基本上,我知道这是由于没有设置$_post值,但我找不到需要放什么来代替$_post。我尝试了json_decode($_post)、file_get_contents(“php://input”)和许多其他方法,但我有点蒙在鼓里。
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_URL, 'http://webservice.local/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
在发布数据的页面上更新了php-
$inputJSON = file_get_contents('php://input');
$input= json_decode( $inputJSON, TRUE ); //convert JSON into array
print_r(json_encode($input));
正如我所说的,至少我现在看到了一个响应,而之前它返回的是一个空白页
您的$_post
为空。如果Web服务器希望看到JSON格式的数据,则需要读取原始输入,然后使用JSON decode对其进行解析。
你需要这样的东西:
$json = file_get_contents('php://input');
$obj = json_decode($json);
另外,测试JSON通信的代码也是错误的...
更新
$data_string = json_encode($data);
$ch = curl_init('http://webservice.local/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
$result = json_decode($result);
var_dump($result);
另外,在Web服务页面上,应该删除头('content-type:application/json');
中的一行。只能调用一次。
问题内容: 我有这个json数据: 使用php我如何发送此发布请求? 问题答案: 不 使用任何外部依赖项或库: $ response 是一个对象。可以像往常一样访问属性,例如 $ response- > … 其中 $ data 是包含 数据 的数组: 警告 :如果在php.ini 中将 allow_url_fopen 设置设置为 Off ,则此方法将无效。
问题内容: 在发布此问题之前,我环顾了四周,因此如果在另一个帖子上我道歉,这只是我的第二个问题,因此如果我没有正确设置此问题的格式,则表示歉意。 我创建了一个非常简单的Web服务,该服务需要获取发布值并返回JSON编码的数组。一切都很好,直到被告知我需要使用内容类型为application / json的表单数据来发布。从那时起,我无法从Web服务返回任何值,这绝对与我过滤其后值有关。 基本上,在
问题内容: 我有一个很大的PDF文件,它是建筑物的平面图。它具有用于所有办公家具的图层,包括座位位置的文本框。 我的目标是使用PHP读取此文件,在文档中搜索文本层,获取其内容和文件中的坐标。这样,我可以绘制出座位位置-> x / y坐标。 有没有办法通过PHP做到这一点?(如果需要的话,甚至可以是Ruby或Python) 问题答案: 签出FPDF(使用FPDI): http://www.fpdf.
问题内容: Solr以以下JSON格式返回响应。 使用PHP读取student_id,student_name的简单方法是什么? 问题答案: 使用将其转换为一个对象。 然后使用来遍历“文档”。 然后,您可以使用和访问字段。
问题内容: 我是JSON格式的新手,在阅读的教程中,我不太了解如何使用php进行解析。所以我有这个: 我想回显 坐标 和 reverseGeocode 。谁能请我朝正确的方向前进? 问题答案: 尝试跑步 您的示例JSON作为字符串在哪里。
来自检查器( 已展开) 从jsoup.connect( 未展开) 共1个答案 匿名用户 相关问题 Javamail不阅读多部分/相关的电子邮件 阅读从GMail发送的邮件 阅读Kafka时Spark丢失99.9%的消息 从 ajax 调用中的服务器接收 HTML 并使用该 HTML 加载页面 阅读主题并使用reactor Kafka将消息批量写入RESTendpoint 在HtmlUnit驱动程序