2015-05-04 64 views
0

林檢查如何改造工程和嘗試以下操作:獲取RetrofitError:500內部服務器錯誤

RESTClient實現:

public class RestClient { 

    private static TaskService REST_CLIENT; 
    private static String ROOT = 
      "URL"; 
    static { 
     setupRestClient(); 
    } 

    private RestClient() {} 

    public static TaskService get() { 
     return REST_CLIENT; 
    } 

    private static void setupRestClient() { 
     OkHttpClient OkHttpClient=new OkHttpClient(); 

     RestAdapter.Builder builder = new RestAdapter.Builder() 
       .setEndpoint(ROOT) 
       .setClient(new OkClient(new OkHttpClient())) 
     .setConverter(new SimpleXmlConverter()); 
     builder.setLogLevel(RestAdapter.LogLevel.FULL); 
     RestAdapter restAdapter = builder.build(); 
     REST_CLIENT = restAdapter.create(TaskService.class); 
    } 
} 

在活動時間:

public void testMethod() 
    { 
     User user=new User("58","345435","4","","0"); 
     RestClient.get().getWeather(user,new Callback<String>() { 

      @Override 
      public void success(String s, Response response) { 
       Log.d("testret", "success: " + s); 
       Log.d("testret", "successu: " + response.getUrl()); 
       Log.d("testret", "successs: " + response.getStatus()); 
      } 
      @Override 
      public void failure(RetrofitError error) 
      { 
       Log.d("testret", "errore: " + error); 
       Log.d("testret", "erroru: " + error.getUrl()); 
      } 
     }); 
    } 

用戶:

public class User { 



    String FTID,UUID,TYPE,DateTimeStamp,SDFVersionNb; 

    public User(String FTID,String UUID,String TYPE,String DateTimeStamp,String SDFVersionNb) 
    { 
     this.DateTimeStamp=DateTimeStamp; 
     this.FTID=FTID; 
     this.UUID=UUID; 
     this.SDFVersionNb=SDFVersionNb; 
     this.TYPE=TYPE; 
    } 
} 

接口:

public interface TaskService { 

    @POST("/GetBulkQueryUpdates") 
    void getWeather(@Body User user, 
        Callback<String> callback); 
} 

上述Web服務方法返回follwing:

<ROWS> 
<ROW> 
<GroupBy>3</GroupBy> 
<QUERY> 
Query Statement 
</QUERY> 
</ROW> 
</ROWS> 

,所以我使用POST方法來檢索上述數據,但在執行的時候我一直在每次雖然得到一個內部服務器錯誤500 Web上的web服務方法正在檢索數據。所以問題是與上面的代碼,但我不知道什麼。我嘗試添加.setConverter(新的SimpleXmlConverter());看完以下網址後: Android Retrofit return status 500 internal server error 但它是一樣的。

任何幫助,將不勝感激。

+0

您確定要將**右鍵**數據發送到**右鍵** url嗎? – EpicPandaForce

+0

你應該確保你的User類有getter和setter。 – EpicPandaForce

回答

0

試試這個.....添加.xml會解決這個問題

public interface TaskService { 

@POST("/GetBulkQueryUpdates.xml") 
void getWeather(@Body User user, 
       Callback<String> callback); 
} 

和UR User類必須以這種格式

@Root(name = "breakfast_menu") 
public class BreakFastMenu 
{ 
@ElementList(inline = true) 
List<Food> foodList; 
} 

@Root(name="food") 
public class Food 
{ 
@Element(name = "name") 
String name; 

@Element(name = "price") 
String price; 

@Element(name = "description") 
String description; 

@Element(name = "calories") 
String calories; 
} 

編輯1:

@Root是一個註釋,在你的情況下它應該是@Root(name = "ROWS")這是ur的根元素XML

+0

謝謝你,我會嘗試,但只是一個問題,@Root代表什麼? –

+0

檢查我的編輯1 –