Android Restmock服务器总是返回500
MockWebServer[37929]在HTTP/1.1中收到请求:POST/users/sign_,并响应:HTTP/1.1500服务器错误 我试图用下面的代码模拟改造api调用,但从未调用过方法onResponseAndroid 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(
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链接,请看。