【发布时间】:2020-08-19 02:55:34
【问题描述】:
我必须向第三方 API 发出 POST 请求。我是通过 CURL 来做的,我已经尝试了好几天,但我无法获得积极的回报。谁能评估我的代码是否正确? 我在 Insomnia 中测试了 API,我得到了反馈,但是在 php 中我只能得到那个反馈。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: '.$authorization, 'Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$resu = (array) json_decode($output);
echo '<pre>';
var_dump($result);
echo '</pre>';
返回变量 $ return
字符串(4406) "{"ClassName":"System.NullReferenceException","Message":"Object 引用未设置为 对象。","数据":null,"InnerException":null,"HelpURL":null,"StackTraceString":" 在 Wangkanai.Detection.Collections.InternetExplorer..ctor(字符串 代理)\r\n 在 Wangkanai.Detection.BrowserResolver.GetBrowser()\r\n
在 lambda_method(Closure , ServiceProvider )\r\n at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(类型 服务类型)\r\n 在 Microsoft.Extensions.Internal.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, Boolean isDefaultParameterRequired)\r\n 在 lambda_method(Closure , IServiceProvider , Object[] )\r\n 在 Microsoft.AspNetCore.Mvc.Controllers.ControllerActivatorProvider.c__DisplayClass4_0.b__0(ControllerContext 控制器上下文)\r\n 在 Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.c__DisplayClass5_0.g__CreateController|0(ControllerContext 控制器上下文)\r\n 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(状态& next, Scope& 范围, Object& 状态, Boolean& isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__14.MoveNext()\r\n--- 从先前抛出异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.d__22.MoveNext()\r\n--- 从先前抛出异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n
在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext 上下文)\r\n 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(状态和下一个, 范围和范围、对象和状态、布尔值和 isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.d__17.MoveNext()\r\n--- 从先前抛出异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.d__15.MoveNext()\r\n--- 从先前抛出异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()\r\n--- 从先前抛出异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.d__7.MoveNext()\r\n--- 从先前抛出异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.d__3.MoveNext()\r\n--- 从先前抛出异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 Advise.Start.Gateway.WebAPI.Startup.c.d.MoveNext() 在 D:\Agents\Agent01\_work\47\s\Advise.Start.Gateway.WebAPI\Startup.cs:line 84\r\n--- 堆栈跟踪从上一个异常位置结束 被抛出 ---\r\n 于 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.d__6.MoveNext()","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":null,"HResult":-2147467261,"Source":"Wangkanai.Detection.Browser ","WatsonBuckets":null}"
解决办法:
curl_setopt($ch, CURLOPT_USERAGENT , "'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31'");
【问题讨论】:
-
确保您知道在哪里使用
$resu和$result。 -
$resu返回为 NULL。我只是在测试 -
您在响应中看到了什么 HTTP 状态代码?我感觉 $body 可能有问题,但无法确定。状态响应应该告诉您问题出在哪里。
-
我得到的反馈是问题中的信息。而
$body是一个写成字符串的json。