2015-05-04 65 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 –