2015-05-22 74 views
8

我陷入了一個問題與發佈數據到服務器與改造。 這是我嘗試做(和什麼不工作):POST數據到數據庫與改造

這是一個實例轉換併發送至Web服務類:

public class Txt { 
    private String text; 

    public Txt (String text) { 
     this.text = text; 
    } 

    public String getText() { 
     return text; 
    } 
    } 

這是我的接口:

public interface textapi { 

    @POST("/php/set_string.php") 
    public void setText (Txt text, Callback<String> cb); 
} 

我的web服務:

<?php 
$user = "user"; 
$database = "db"; 
$password = "pw"; 

$data = json_decode(file_get_contents("php://input"), true); 

$con = mysqli_connect("localhost", $user, $password, $databse); 

$statement = mysqli_prepare ($con, "INSERT INTO votes (vote_text) VALUES (?)"); 
mysqli_stmt_bind_param ($statment, "s", $data['text']); 
mysqli_stmt_execute($statement); 

mysqli_close($statment); 
mysqli_close($con); 

header('Content-Type: application/json'); 
echo json_encode($data['text']); 
?> 

我不知道我做錯了。我研究和嘗試了很多,但我不能得到它的工作:/

編輯:好吧,我得到了在Android上的錯誤消息:

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) 

編輯:我加入@Body解決的問題在interfeace:

public interface textapi { 

    @POST("/php/set_string.php") 
    public void setText (@Body Txt text, Callback<String> cb); 
} 
+0

究竟是不是工作?你有什麼錯誤嗎? – Bono

+0

問題是我沒有得到任何錯誤,它只是不工作:/ –

+1

您是否嘗試過顯示所有PHP錯誤?將它放在頁面頂部:'error_reporting(E_ALL); ini_set('display_errors','1');' – Bono

回答

0

@POST("/php/set_string.php") 
public void setText (Txt text, Callback<String> cb); 

應該是

@POST("/php/set_string.php") 
public void setText (@Body Txt text, Callback<String> cb); 

因爲PHP期待的原始數據,通過對象文本的前面指定註釋@Body,你告訴的Java對象附加爲原料體