2016-10-05 40 views
0

我是新來的改造。我怎樣才能發送參數,並從波紋管網址獲取Json?在android中翻新?

http://xxx:8087/courier.svc/login?username=jim&password=123456 

我需要鏈接教程。

此代碼是我MainActivity

private void loadJSON(String username, String password) { 
    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl("http://192.168.8.11:8087/sample.svc/") 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 
    RequestInterface_Login request = retrofit.create(RequestInterface_Login.class); 
    Call<JSONResponseLogin> call = request.getJSON(username, password); 
    call.enqueue(new Callback<JSONResponseLogin>() { 
     @Override 
     public void onResponse(Call<JSONResponseLogin> call, Response<JSONResponseLogin> response) { 

      JSONResponseLogin jsonResponse = response.body(); 
      data = new ArrayList<>(Arrays.asList(jsonResponse.getLogin())); 
     } 

     @Override 
     public void onFailure(Call<JSONResponseLogin> call, Throwable t) { 
      Log.d("Error", t.getMessage()); 
     } 
    }); 
} 

ModelLogin

public class ModelLogin { 
    private String username; 
    private String password; 

    public String getUsername() { 
     return username; 
    } 

    public String getPassword() { 
     return password; 
    } 
} 

RequestInterface_Login

public interface RequestInterface_Login { 

    @GET("/login/{username}/{password}") 
    Call<JSONResponseLogin> getJSON(@Path("username") String username, @Path("password") String password); 
} 

JSONResponseLogin

public class JSONResponseLogin { 
    private ModelLogin[] login; 

    public ModelLogin[] getLogin() { 
     return login; 
    } 
} 

但是讓我來NullPointerException

enter image description here

我得到json從服務中相同的波紋管:

{"Key":null,"Response":1} 
+0

API命中字段或JSON響應的形式,還是直接在URL中輸入? –

+0

我的資料庫是:compile'c​​om.squareup.retrofit2:retrofit:2.1.0' compile('com.squareup.retrofit2:converter-gson:2.0.0-beta4'){ exclude module:'retrofit' } –

+0

我不是在談論改造。如果你可以分享實際的API鏈接,我可以幫你解決它 –

回答

3

獲得致電改造之前,你可以只打印網址,然後你可以在瀏覽器中加載的網址,看看有什麼反應來了您可以通過波紋管前行call.enqueue(new Callback<JSONResponseLogin>()

Log.e(TAG, "API URL: " + call.request().url()); 

添加日誌檢查響應 讓我知道,我會幫你...怎麼把我在我的3個項目使用改裝

做這樣的...在接口

@GET("/courier.svc/login?) 
Call<JSONResponseLogin> getJSON(@Query("username") String username, 
           @Query("password") String password); 

,並從底座上卸下它.baseUrl("http://192.168.8.11:8087")

+0

它顯示我:http://192.168.8.11:8087/login /吉姆/ 123456但我需要http://192.168.8.11:8087/courier.svc/login?username=jim&password=123456 –

+0

我編輯答案看到做到這一點,讓我知道它的作品@JoJoRoid –

+0

我的手杖看到真現在的URL。但讓我錯誤java.lang.NullPointerException:storage == null我認爲它是{「Key」:null,「Response」:1}? –

0

我正在使用我們最新的Retrofit庫在「在Android中進行改造」中撰寫這篇文章,該插件可用於將改造集成到您的項目中。 在使用reftrofit之前,我們只需要按照一些步驟在Android studio中添加QAssist插件,這將減少您的Web服務集成工作。

1.在Android工作室中添加(QAssist - Android Studio插件)Android插件。 (https://github.com/sakkeerhussain/QAssist)。: -

2.當我們完成插件,然後我們需要重新啓動我們的Android工作室。

3.檢查你的Android工作室Menubar你可以找到「QAssist」。

4.點擊該按鈕並從改進集成開始。

5.現在我們需要: - Web Api的BaseUrl - 所有Api的en點。 - 所有請求的樣例請求和響應。 - 完成這些步驟後,您的改造(QAssist /改造包在項目內生成)。

6.您可以在該包內找到A類和一個接口。

7.接口包含所有端點細節,並且類將包含改進連接細節。

8.我們只需要添加一個小的代碼來訪問和Api和解析Api對數據模型的響應。 9.使用此示例函數調用Api。

private void demoRetroFitCall() { 
     APIService apiService = RetrofitManager.getInstance(this); 
     //APIService apiService = RetroFitApiClient.getClient().create(APIService.class); 
     Call<ModelData> call = apiService.TestGet(); 
     call.enqueue(new Callback<ModelData>() { 
      @Override 
      public void onResponse(Call<ModelData> call, Response<ModelData> response) { 
       Log.d("TAG", "Data recived in response.body");    
       } 

      @Override 
      public void onFailure(Call<ModelData> call, Throwable t) { 
       Log.e("TAG", t.toString());    
       } 
     }); 
    } 
56 - voda