2014-03-31 32 views
1

我真的可以在這裏使用一些幫助。 我正在學習與libGDX的HttpRequest,並且我堅持setContent(); 這是我試圖運行的Java代碼。它工作正常,除了一個小問題:它不會將變量「名稱」和「分數」發送到httptest.php文件。然而,php文件運行正常,將空值插入到數據庫中。 的Eclipse甚至顯示我講的是一個空的名字成功和0的比分結果:用JAVA(libGdx)HttpRequest並用PHP處理它

Status code : 200 
Result : connected succesfully inserted and his score: 0 

所以它看起來像兩個程序進行通信,除了Java不將數據發送到PHP。 我用完了想法,不知道該怎麼做。

Java代碼:

Map<String, String> parameters = new HashMap<String, String>(); 
     parameters.put("name", "testname1"); 
     parameters.put("score", "56"); 
     HttpRequest request = new HttpRequest(HttpMethods.POST); 
     request.setUrl("www.myurl.com/httptest.php"); 

     request.setContent(HttpParametersUtils.convertHttpParameters(parameters)); 
    // request.setContent("name=testname&score=10"); 

     Gdx.net.sendHttpRequest(request, new HttpResponseListener() { 
       @Override 
       public void handleHttpResponse(HttpResponse httpResponse) { 
         Gdx.app.log("Status code ", "" + httpResponse.getStatus().getStatusCode()); 
         Gdx.app.log("Result ", httpResponse.getResultAsString()); 
       } 
       @Override 
       public void failed(Throwable t) { 
         Gdx.app.log("Failed ", t.getMessage()); 
       } 
     }); 

PHP代碼:

<?php 
$name=$_POST["name"]; 
$scoreget=$_POST["score"]; 
$score=(int)$scoreget; 
if (is_int ($score)) 
{ 
// Create connection 
$con=mysqli_connect($mycon); 

// Check connection 
    if (mysqli_connect_errno()) 
     { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 
    else{echo"connected ";} 

$sql= "INSERT INTO scores (name, score, text) VALUES ('$name', '$score','')"; 
if (!mysqli_query($con, $sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    }else{ 
    echo "succesfully inserted ".$name." and his score: ".$score; 
     } 
}else{ 
echo "Invalid numeric type"; 
} 
?> 

我還測試了httptest.php這種形式,它工作正常:

<html> 
<body> 
<form action="httptest.php" method="post"> 
Name: <input type="text" name="name"><br> 
Score: <input type="text" name="score"><br> 
<input type="submit"> 
</form> 
</body> 
</html> 
+0

在Java代碼中,您有一條註釋掉的行。它是否適用於該行? – Kryten

+0

不幸的是沒有。這是我第一次嘗試,我從我在互聯網上找到的示例文件複製,我不明白爲什麼它不工作... –

+0

'file_get_contents('php:// input');'return anything ? – Chase

回答

0

它如果您在請求上正確設置了Content-Type標題,將有幫助嗎?

request.setHeader("Content-Type", "application/x-www-form-urlencoded"); 

我想知道PHP是否不參與POST主體中的參數,除非存在正確的內容類型。