Android Restmock服务器总是返回500

Android Restmock服务器总是返回500,android,api,retrofit,retrofit2,Android,Api,Retrofit,Retrofit2,MockWebServer[37929]在HTTP/1.1中收到请求:POST/users/sign_,并响应:HTTP/1.1500服务器错误 我试图用下面的代码模拟改造api调用,但从未调用过方法onResponse public static Retrofit getClient() { RESTMockServerStarter.startSync(new JVMFileParser()); RESTMockServer.whenPOST(

MockWebServer[37929]在HTTP/1.1中收到请求:POST/users/sign_,并响应:HTTP/1.1500服务器错误

我试图用下面的代码模拟改造api调用,但从未调用过方法onResponse

       public static Retrofit getClient() {

        RESTMockServerStarter.startSync(new JVMFileParser());
        RESTMockServer.whenPOST(pathContains("sign_in")).thenReturnFile(200, "login_v1.json");
        //Creating a retrofit object
        retrofit = new Retrofit.Builder()
                .baseUrl(RESTMockServer.getUrl())
                .addConverterFactory(GsonConverterFactory.create())
                .client(getOkHttpClient())
                .build();

        return retrofit;
    }

call.enqueue(new Callback<JsonElement>() {
                    @Override
                    public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
                        try {
                            if (response != null && response.isSuccessful()) {
                                if (response.body() != null) {
                                    JsonObject jsonResponse = response.body().getAsJsonObject();
                                    if (jsonResponse.get(ApiConstants.STATUS).isJsonPrimitive() && jsonResponse.get(ApiConstants.STATUS).getAsJsonPrimitive().isNumber()) {
                                        // Api call handling as per the status

                                    }
                                }
                            } else {
                                System.out.println("Fail---------------------------");

                            }
                        } catch (Exception e) {
                            System.out.println("Fail---------------------------");
                        }
                    }

                    @Override
                    public void onFailure(Call<JsonElement> call, Throwable t) {
                        //Show message to user for api failure
                        System.out.println("Fail---------------------------");
                    }

                });

publicstatic翻新getClient(){
RESTMockServerStarter.startSync(新的JVMFileParser());
whenPOST(路径包含(“登录”))。然后返回文件(200,“login_v1.json”);
//创建改装对象
改装=新改装.Builder()
.baseUrl(RESTMockServer.getUrl())
.addConverterFactory(GsonConverterFactory.create())
.client(getOkHttpClient())
.build();
回流改造;
}
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
试一试{
if(response!=null&&response.issusccessful()){
if(response.body()!=null){
JsonObject jsonResponse=response.body().getAsJsonObject();
if(jsonResponse.get(ApiConstants.STATUS).isJsonPrimitive()&&jsonResponse.get(ApiConstants.STATUS).getAsJsonPrimitive().isNumber()){
//根据状态进行Api调用处理
}
}
}否则{
System.out.println(“失败------------------------------------------”;
}
}捕获(例外e){
System.out.println(“失败------------------------------------------”;
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
//向用户显示api失败的消息
System.out.println(“失败------------------------------------------”;
}
});
正在添加实现单元测试类。但我始终发现MockWebServer[48913]在HTTP/1.1中收到请求:POST/users/sign_,并响应:HTTP/1.1500服务器错误

package com.example;

import android.os.Build;

import com.example.webclient.ApiInterfaces;
import com.google.gson.JsonElement;

import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;

import io.appflate.restmock.JVMFileParser;
import io.appflate.restmock.RESTMockServer;
import io.appflate.restmock.RESTMockServerStarter;
import okhttp3.OkHttpClient;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

import static io.appflate.restmock.utils.RequestMatchers.pathEndsWith;

@RunWith(RobolectricTestRunner.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class stubtest {

    private static final String PATH_ANDRZEJCHM_PROFILE = "src/test/resources/__files/city_v1.json";

    @Test
    @Config(sdk = Build.VERSION_CODES.O_MR1)
    public void exampleTest() {

        RESTMockServerStarter.startSync(new JVMFileParser());
        RESTMockServer.whenGET(pathEndsWith("/available_city_master")).thenReturnFile(PATH_ANDRZEJCHM_PROFILE);

        Retrofit retrofit;
        OkHttpClient client = new OkHttpClient();
        retrofit = new Retrofit.Builder()
                .baseUrl(RESTMockServer.getUrl())
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
        ApiInterfaces service = retrofit.create(ApiInterfaces.class);
        Call<JsonElement> call = service.getCity("surat", 1);

        call.enqueue(new Callback<JsonElement>() {
            @Override
            public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
                System.out.println("request" + response.body());
            }

            @Override
            public void onFailure(Call<JsonElement> call, Throwable t) {
                System.out.println("request" + t.getMessage());
            }
        });

    }
}
package.com.example;
导入android.os.Build;
导入com.example.webclient.api接口;
导入com.google.gson.JsonElement;
导入org.junit.FixMethodOrder;
导入org.junit.Test;
导入org.junit.runner.RunWith;
导入org.junit.runners.MethodSorters;
导入org.roblectric.roblectrictTestRunner;
导入org.roblectric.annotation.Config;
导入io.appflate.restmock.JVMFileParser;
导入io.appflate.restmock.RESTMockServer;
导入io.appflate.restmock.RESTMockServerStarter;
导入okhttp3.OkHttpClient;
2.电话;;
2.回拨;
2.回应;;
进口改装2.改装;
进口改装2.converter.gson.GsonConverterFactory;
导入静态io.appflate.restmock.utils.RequestMatchers.pathEndsWith;
@RunWith(RobolectrictTestRunner.class)
@FixMethodOrder(MethodSorters.NAME\u升序)
公共类存根测试{
私有静态最终字符串路径_和rzejchm_PROFILE=“src/test/resources/_files/city_v1.json”;
@试验
@配置(sdk=Build.VERSION\u code.O\u MR1)
public void exampleTest(){
RESTMockServerStarter.startSync(新的JVMFileParser());
RESTMockServer.whenGET(pathEndsWith(“/available\u city\u master”))。然后返回文件(PATH\u和rzejchm\u配置文件);
改造;
OkHttpClient=新的OkHttpClient();
改装=新改装.Builder()
.baseUrl(RESTMockServer.getUrl())
.addConverterFactory(GsonConverterFactory.create())
.客户(客户)
.build();
ApiInterfaces服务=翻新.create(ApiInterfaces.class);
Call Call=service.getCity(“surat”,1);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
System.out.println(“请求”+response.body());
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
System.out.println(“请求”+t.getMessage());
}
});
}
}

我认为你做得不对。还不太清楚代码中的RESTMockServerStarter是什么。我建议您通过这些链接访问单元测试/模拟web服务器


  • 你能发布实现和测试类吗?@anshul好的,我将在这里放置示例代码。@anshul我更新了问题,请看。我正在使用这个github链接,请看。