You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 9调用PHP RESTful API遇HttpErrorResponse问题求解决方案

解决Angular 9 HttpClient对接PHP RESTful API的HttpErrorResponse问题

我来帮你排查这个问题,从报错信息来看,虽然HTTP状态码是200 OK,但ok: false说明Angular无法正确解析返回的响应内容,核心问题出在PHP的响应格式和Angular的请求路径上,下面一步步解决:

1. 修正PHP代码的响应格式

你的PHP代码有两个关键问题:

  • 响应头设置成了text/html,但Angular的HttpClient默认期望接收JSON格式的响应
  • 你调用了json_encode($response)但没有输出,反而用print_r($response)输出了数组的文本打印结果,这完全不是Angular能解析的JSON

修改后的PHP代码如下:

<?php 
$___notjson=1; 
// 改为JSON类型的响应头,确保编码正确
header('Content-Type: application/json; charset=utf-8');
// 解决跨域问题(如果Angular和PHP不在同一端口/域名)
header("Access-Control-Allow-Origin: http://localhost:4200");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");

require 'uAPImodule.php'; 

$request = new Request(array( 
    'oauth_consumer_key' => 'check', 
    'oauth_consumer_secret' => 'fkFNhdbbRENO1GQilHxWvO86QabO6g', 
    'oauth_token' => 'OfTW8pDo1aIjNvHOdv.nRbZAER5x.LRndWwltepI', 
    'oauth_token_secret' => '6bnfzAGvMpHpJF1gs9XWqSWGBAdAzdXJWxAj1S..' 
)); 

$response = $request->get('/news', array( 
    // 你的请求参数
)); 

// 输出JSON格式的响应,这才是Angular需要的内容
echo json_encode($response); 
// 移除print_r,它会输出非JSON的文本内容
// print_r($response); 
?>

2. 修正Angular的请求路径

你现在请求的是assets/uAPIwork.php,这是错误的:Angular的assets目录是静态资源目录,Angular开发服务器(ng serve)不会解析PHP代码,PHP文件必须放在PHP服务器(比如XAMPP的htdocs目录)中运行,所以你需要修改请求URL为PHP服务器的地址。

修改后的Home.ts代码:

request(){ 
    // 替换成你的PHP服务器地址,比如localhost是PHP服务器的域名/IP
    this.http.get('http://localhost/uAPIwork.php')
        .subscribe(
            res => { console.log('请求成功:', res); },
            err => { console.error('请求失败详情:', err); } // 加上错误回调,方便调试
        ); 
}

3. 额外注意事项

  • 确保你的PHP服务器(比如Apache/Nginx)已经正常启动,PHP文件放在服务器的根目录(比如XAMPP的htdocs)
  • 先直接在浏览器中访问http://localhost/uAPIwork.php,确认返回的是标准的JSON格式,排除PHP本身的逻辑错误
  • 如果仍然有跨域问题,确保PHP中的CORS头设置正确,允许Angular所在的域名(http://localhost:4200)访问

内容的提问来源于stack exchange,提问作者Maher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 00:32:49