2012-12-26 83 views
0

嗨每一个, 我有具有邮件ID和密码,在提交应该调用哪个inturn生成的身份验证令牌的API一个登录表单。我已经使用POST方法在PHP卷曲,但得到以下错误。登录使用curl PHP(POST方法)

的Apache Tomcat/6.0.36 - 错误报告 ..一些HTML样式..因为请求实体是由所请求的资源请求方式不支持的格式 服务器拒绝这个请求

和这是我的Ajax调用..

function callapi() 
{ 
data = new Object(); 
var email= document.getElementById("input01").value; 
var pwd=document.getElementById("input02").value; 
if(email != ""&& pwd != "") 
{ 
data.Email = email; 
data.Pwd = pwd; 

} 

jQuery.ajax({ 
    url: "http://localhost/stackato/nlogin.php", 
    type: "POST", 
    dataType:"json", 
    data:data, 
    error: function (data) { 
    alert('error--'+data); 
    }, 
    success: function (data) { 

if(data=="invalid") 
{ 

} 
else 
{ 

window.location.href="finalstackatolists1.html"; 
} 



} 
}); 

} 

,这是我的卷曲PHP页面

<?php 
header('Content-type: application/json'); 
$url = $_SERVER['REQUEST_URI']; 
$scriptname = $_SERVER['SCRIPT_NAME']; 
$queryString = $_SERVER['QUERY_STRING']; 
$mail=$_POST["Email"]; 
$pwd=$_POST["Pwd"]; 
$action = $_POST["action"]; 


$nurl = str_replace($scriptname,"...the api...",$url); 




//open connection 

$ch = curl_init(); 
$data = array("username" => $mail, "password" => $pwd);                  
$req_data = json_encode($data); 

curl_setopt($ch, CURLOPT_URL, $nurl); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $req_data); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 


//execute post 

if(! $result = curl_exec($ch)) { 
    die(curl_error($ch)); 
    curl_close($ch); 
} 

if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == '500') 
{ 
    header("Status: 500 Server Error"); 
} 

curl_close($ch); 


echo $result; 


?> 

(我试过它在REST客户端和令牌已生成)

请帮我解决这个..在此先感谢..

+0

我怀疑'标题(“内容类型:应用程序/ JSON”);'应该是curl_close后'()' –

+0

@ Dr.Dan:尝试,但仍然得到同样的错误。 – user1929687

+0

在卷曲加上'curl_setopt($ CH,CURLOPT_HTTPHEADER,阵列( “内容类型:应用程序/ JSON”))'也参考[这里](http://stackoverflow.com/questions/4271621/php-curl-post -json) – mithunsatheesh

回答

0

您必须指定发布数据的类型是JSON

附加的此行到您的卷曲代码

curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: application/json"));