我在使用PHP连接到ASP.Net Web服务时遇到问题。
Web服务已知是可操作的,因为当我们使用来自同一域的Javascript连接时它返回数据,但是当我尝试使用PHP连接时,我收到以下错误:
HTTP/1.1 500 Internal Server Error Content-Type: application/json; charset=utf-8 Server: Microsoft-IIS/7.5 jsonerror: true X-Powered-By: ASP.NET Date: Tue, 17 May 2011 03:40:17 GMT Connection: close Content-Length: 819 {"Message":"Invalid JSON primitive: birthday.","StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\ [etc]
在PHP中将Content-Type设置为“application / json; charset = utf-8”,我们尝试使用PHP中的以下POST数据发送名为“birthday”的参数:
$post_data = array( 'birthday' => 'none' );
我认为ASP网络服务由于某种原因无法解析'birthday'参数,但我不确定为什么。
在调用Web服务之前,是否需要在PHP中将POST数据显式编码为JSON?
感谢。
答案 0 :(得分:4)
可能是这个Web服务采用Json格式的发布数据。如果是,那么你应该使用
$post_data = array( 'birthday' => 'none' );
$jsonData = json_encode ($post_data );
了解详情json_encode