我试图通过cUrl
从我的Apache localhost上的PHP表单发送一些XMl到一个.ashx
监听器类,其ProcessRequest()
运行在我的.NET localhost上。
我在不同的端口上运行Apache和.NET,它们工作正常,问题是cURL
返回500内部服务器错误。
我的cURL
适用于Requestb.in并且没有问题,但是在发送到我的本地.NET开发服务器时,我收到错误No parameterless constructor defined for this object
。我不知道为什么会发生这种情况,起初我认为可能是授权问题,但是为页面设置了正确的授权无效(下面的代码)。
<location path="AccountHandler.ashx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
这是我的cURL
代码:
function DoPostRequest($url, $xml){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: BASIC ' . base64_encode("test:test"),
'Content-type: application/xml',
'Content-length: ' . strlen($xml),
'User-Agent: Googlebot/2.1',
));
$output = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $output;
}
在localhost上接收POST是否存在某种本地.NET防护?这对我来说似乎很奇怪,但回顾过去我确实记得在过去的本地环境中无法接收来自第三方API的推送通知。
这是问题还是我忽略了一些配置问题?