【发布时间】:2018-02-09 02:42:04
【问题描述】:
当在这个 url 上发出 GET 请求时,我得到 JSON:
http://52.74.115.250:8080/api/orders?startDay=1&startYear=2017&startMonth=1&endYear=2018&endMonth=2&endDay=9&isAll=true"
当我在 android 中使用改造库尝试此操作时,出现此错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 应为 BEGIN_OBJECT,但在第 1 行第 1 列路径 $
我的代码如下。
RetrofitClient.java
public class RetrofitClient {
public static Retrofit retrofit;
public static Gson gson;
public static Retrofit getClient(String baseUrl)
{
if(retrofit==null) {
gson = new GsonBuilder() .setLenient().create();
retrofit = new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create(gson)).build();
}
return retrofit;
}
}
ApiInterface.java
public interface ApiInterface {
@FormUrlEncoded
@POST("local?")
Call<AuthResponse> loginm(@Field("email") String username, @Field("password") String password);
@GET("/orders?startDay=1&&startYear=2017&&startMonth=1&&endDay=1&&endYear=2018&&endMonth=1")
Call<OrderList> getOrder(@Header("Authorization") String authorization, @Header("language")String language);
}
ApiUtils.java
public class ApiUtils {
public static final String BASE_URL = "http://52.74.115.250:8080/";
static public String loginUrlStr = BASE_URL +"auth/";
static public String dealStr=BASE_URL+"api/";
public static ApiInterface getSOService(String url)
{
return RetrofitClient.getClient(url).create(ApiInterface.class);
}
}
这就是我在 MainActivity.java 中提出请求的方式:
myInterface.getOrder(token,"english").enqueue(new Callback<OrderList>() {
@Override
public void onResponse(Call<OrderList> call, Response<OrderList> response) {
if(response.isSuccessful())
{
Log.d("resultorder","RESULT IS "+response.body().getOrders().size());
}
}
@Override
public void onFailure(Call<OrderList> call, Throwable t) {
}
});
【问题讨论】:
-
请在浏览器中发布此网址并发布您的 JSON
-
如果你需要一步一步地按照这个-stackoverflow.com/questions/21398598/…
-
使用更新的改造 2.0.2
-
@Adilhusen:当我在浏览器中粘贴 url 时,它给出了“未授权”..但是我在我的改造获取请求中添加了身份验证标头,其中授权值是我们成功登录后返回的令牌.
-
好的,那么首先你需要检查邮递员,并在你的问题中发布你的 json 回复