【问题标题】:Getting RetrofitError: 500 Internal Server Error获取 RetrofitError:500 内部服务器错误
【发布时间】:2015-07-13 15:01:41
【问题描述】:

我正在检查 RetroFit 的工作原理并尝试了以下方法:

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);
}

上述webservice方法返回如下:

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

所以我使用 post 方法来检索上述数据,但是每次从 web 执行 webservice 方法时,我都会收到内部服务器错误 500,正在检索数据。所以问题出在上面的代码上,但我不知道是什么。我尝试添加 .setConverter(new SimpleXmlConverter());查看以下网址后: Android Retrofit return status 500 internal server error 但它是一样的。

任何帮助将不胜感激。

【问题讨论】:

  • 您确定将 right 数据发送到 right url?
  • 你应该确保你的 User 类有 getter 和 setter。

标签: java android retrofit


【解决方案1】:

试试这个.....添加.xml 将解决问题

public interface TaskService {

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

你的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"),它是你的 XML 的根元素

【讨论】:

  • 谢谢,我现在就试试,但只是一个问题,@Root 代表什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2011-10-17
  • 2010-11-15
相关资源
最近更新 更多