2017-08-20 30 views
0

http://www.superbinstruments.com/directory/index.php?r=webservice/profile/id/4096如何在android中使用retrofit解析此web服務?

在這裏,我想在身體的URL(如上)和JsonObject(可以爲null)中傳遞ID。

這裏的概念就像當我將null傳遞給json對象時,它將檢索配置文件數據,或者如果我將json對象與配置文件信息一起傳遞,那麼它將更新配置文件數據。

我已經嘗試過下面的方法,但我可以檢索數據但我無法更新數據。 要更新數據,我們可以傳遞與Body相同的JSON響應。

@POST("index.php") 
Call<UserProfile> profileUser(@Query("r") String value, @Body String user); 

@POST("index.php?") 
Call<UserProfile> saveUser(@Query("r") String value, @Body JSONObject user); 

我傳遞這樣的: 值= Web服務/型材/ ID/4096

如果我通過的JSON字符串作爲配置文件更新的信息,然後我得到 「不再需要無效的請求的密碼。」
或 如果我將通過JsonObject作爲配置文件更新信息 然後我得到 java.lang.OutOfMemoryError:嘗試拋出OutOfMemoryError時拋出OutOfMemoryError;沒有堆棧跟蹤可用

+1

檢查答案 –

回答

0

您發佈的鏈接不需要任何機構發佈。從您的代碼中刪除Body。要使用@Field,您必須註釋方法爲@FormUrlEncoded

您的方法應該是這樣的。

@FormUrlEncoded 
@POST("index.php?r=webservice/profile/id/") 
Call<UserProfile> saveUser(@Field("value") String value); 

希望它能幫助:)

+0

謝謝主席先生,回答打電話給你的服務,我需要身體,因爲這個概念就像我不會通過身體則檢索整個數據,當我通過身體,然後它更新數據 –

+0

然後,你不應該發送json對象。你應該在你的身體中使用模型類對象。 Retrofit將它轉換成json –

+0

好的謝謝Bhuvanesh –

0

請嘗試這種方式

@POST("index.php") 
Call<User> getInstruments(@Query("r") String webservice, @Body User user); 

而且你應該使用你的模型類爲Bhuvanesh通過JSON建議

JSONObject jObj = null; 
    try { 
     jObj = new JSONObject(); 
     jObj.put("firstname", "Kunjan Shah"); 
    } catch (JSONException ex) { 
     ex.printStackTrace(); 
    } 

User user = new User(); 
user.setData(jObj); 

這裏是你的模型類

public class User { 

    public String getSuccess() { 
     return success; 
    } 

    public void setSuccess(String success) { 
     this.success = success; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public JSONObject getData() { 
     return data; 
    } 

    public void setData(JSONObject data) { 
     this.data = data; 
    } 

    String success; 
    String message; 
    JSONObject data; 
} 

,並通過將這兩參數

Call update_user_profile = yourapiinterfaceobject.getInstruments("webservice/profile/id/4096", user);

+0

我可以檢索數據,但無法更新配置文件數據,無論是時間repsonse像檢索數據成功。但是當我通過json時,它應該成功更新數據 –

相關問題