【问题标题】:PHP cURL - PARSE server responsePHP cURL - 解析服务器响应
【发布时间】:2015-01-13 23:06:53
【问题描述】:

我不是程序员,我需要你的帮助。

我有一个返回服务器响应的 cURL 函数 - successerror

400 - 错误响应:

<?xml version="1.0" encoding="UTF-8"?><statusCode>400</statusCode>
<errorMessage>In order to be contacted, please enter a valid phone number.</errorMessage>

200 - 成功响应:

<?xml version="1.0" encoding="UTF-8"?>
<statusCode>200</statusCode>

我需要根据 200 或 400 StatusCode 验证响应。

如果状态为 200,则照常进行。

如果状态是 400(错误),那么我需要提取错误消息(去除所有标签)和 ECHO 错误消息(在上面的示例中 - 为了联系,请输入有效的电话号码.)

我该怎么做?请帮忙。

谢谢。

卷曲代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
curl_close($ch);

【问题讨论】:

  • 你能给我们看看你的php代码吗?
  • $result 即使状态为 400 也是字符串?
  • $results 只是一个原始服务器响应 - 我需要解析这些原始数据

标签: php xml curl formatting


【解决方案1】:

我仍然不确定您到底在寻找什么 但你可以试试:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);

$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 400) {
  /* Handle 400 here. */
  echo "Error: " . curl_error($ch);
}


$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($result , 0, $header_size);
$body = substr($result , $header_size);
 var_dump($header);
 var_dump($body);

curl_close($ch);

如果有任何问题欢迎您

【讨论】:

  • 如果服务器响应为 400(错误),则表示用户提交了错误的信息。在这种情况下,我需要提取错误消息,并将此错误消息回显给用户。所以我首先需要确定我是否获得了 200 或 400 状态码。第二,如果我得到 400,那么我需要 ECHO 只是错误消息
  • 所以?你试过我的改变吗?你得到 $header 了吗?
  • 如果我使用你的代码并执行echo $result - string(207) "HTTP/1.0 200 OK Server: Apache/2.2.15 (CentOS) Vary: Accept -Encoding,User-Agent Content-Type: text/html; charset=UTF-8 Date: Wed, 14 Jan 2015 00:07:32 GMT Connection: Keep-Alive Content-Length: 139" string(139) "2517111200" HTTP/1.0 200 OK 服务器:Apache/2.2.15 (CentOS) 变化:Accept-Encoding,User-Agent Content-Type: text/html; charset=UTF-8 日期:2015 年 1 月 14 日星期三 00:07:32 GMT 连接:保持活动内容长度:139 2517111200
  • 检查我的更新,现在您可以看到 curl 响应和“服务器行响应”之间的区别
  • 这是我得到的echo $header - string(211) "HTTP/1.0 400 Bad Request Server: 和一堆其他代码......所以它不起作用,因为我得到了太多不必要的代码 --- 我需要清理我得到的响应......
猜你喜欢
  • 2014-02-04
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 2016-08-20
  • 2018-06-23
  • 1970-01-01
相关资源
最近更新 更多