2016-10-05 2 views
0

개량 신제품입니다. param을 보내고 Json을 벨로우즈 URL에서 가져 오는 방법은 무엇입니까?안드로이드의 개조?

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! 당신이 개조를 호출 들어가기 전에

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

API가 필드 또는 JSON 응답 형태로 표시되거나 URL에 직접 입력됩니까? –

+0

내 라이브러리는 : com.squareup.retrofit2 : retrofit : 2.1.0 ' 컴파일 ('com.squareup.retrofit2 : converter-gson : 2.0.0-beta4 ') { 제외 모듈 :'retrofit ' } –

+0

나는 개장에 대해 말하는 것이 아닙니다. 실제 API 링크를 공유 할 수 있다면 도와 드리겠습니다. –

답변

3

그냥 URL을 인쇄 할 수 있습니다 그리고 당신은 브라우저에 URL을로드하고 오는 어떤 응답을 볼 수 있습니다

enter image description here

나는 서비스 같은 노호 json 수 당신은 당신의 응답을 확인 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/jim/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 라이브러리를 사용하여 'Retrofit in android'에이 글을 쓰고 있습니다.이 플러그인을 사용하여 프로젝트에 Retrofit을 통합 할 수 있습니다. Reftrofit을 사용하기 전에 Android Studio에 QAssist 플러그인을 추가하기위한 몇 가지 단계를 수행하면 Webservices 통합 노력이 줄어 듭니다.

귀하의 안드로이드 스튜디오에 1.Add (QAssist - 안드로이드 스튜디오 플러그인) 안드로이드 플러그인. (https://github.com/sakkeerhussain/QAssist). -

2. 플러그인으로 작업했을 때 Android 스튜디오를 다시 시작해야합니다.

3. Android 스튜디오 메뉴 바 확인 "QAssist"를 찾을 수 있습니다.

4. 해당 항목을 클릭하고 Retrofit Integrate에서 시작하십시오.

5. 이제 우리는 다음을 필요로합니다. - Web Api의 BaseUrl - 모든 Api의 포인트입니다. - 모든 요청의 샘플 요청 및 응답. -이 단계를 완료하면 reftrofit (QAssist/retrofit 패키지가 Project 내부에서 생성됩니다).

6. 해당 패키지에는 클래스 및 인터페이스가 있습니다.

7. 인터페이스에는 모든 종단점 세부 정보가 포함되어 있으며 클래스는 개조 연결 세부 정보를 포함합니다.

8. 우리는 API에 액세스하고 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