2016-10-05 13 views
0

Retrofitの新機能です。 paramを送信してJsonをurlowから取得するにはどうすればよいですか?アンドロイドでの改造?

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 'com.squareup.retrofit2:retrofit:2.1.0' コンパイル( 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'){ 除外モジュール: 'retrofit' } –

+0

私は改造について話していません。実際のAPIリンクを共有できる場合は、 –

答えて

3

あなたはあなただけのURLを印刷することができます改造を呼び出して取得し、ブラウザでURLをロードして来ているどのような応答を参照できるようにするにはあなたはあなたの応答を確認し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:80:8087/courier.svc/login?username=jim&password=123456 –

+0

私は答えを編集してこれを参照してくださいし、私の仕事を知っている必要がありますする必要があります@JoJoRoid –

+0

私は本当に参照してください今すぐURLを取得してもエラーが出るjava.lang.NullPointerException:storage == null {"Key":null、 "Response":1}と思っていますか? –

0

私は最新のRetrofitライブラリを使用してこの記事を 'Retrofit in android'に書いています。このプラグインを使用してRetrofitをプロジェクトに統合することができます。 Reftrofitを使用する前に、QAssistプラグインをAndroidスタジオに追加するためのいくつかの手順を実行するだけで、Webサービス統合の労力を軽減できます。

1.Add(QAssist - Android Studio Plugin)AndroidスタジオのAndroidプラグイン。 (https://github.com/sakkeerhussain/QAssist): -

2.私たちはプラグインでやったとき、私たちはAndroidスタジオを再起動する必要があります。

3. Androidスタジオメニューバーを確認する「QAssist」が見つかります。

4.それをクリックし、Retrofit Integrateから開始します。

5.ここで必要なのは - Web ApiのBaseUrl - すべてのApiのポイントです。 - すべてのリクエストのサンプルリクエストとレスポンス。 - これらのステップを完了すると、reftrofit(QAssist/retrofitパッケージはProject内で生成されます)。

6.そのパッケージの中にクラスと1つのインターフェイスがあります。

7.インターフェイスにはすべてのエンドポイントの詳細が含まれ、クラスはRetrofit接続の詳細をサポートします。

8. Apiのデータモデルへの応答とApiとParseにアクセスするための小さなコードを追加するだけです。 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