我是使用OkHttpClient的新手,并且想知道是否有人可以帮助我。
我想要实现的目标是什么?
我只是想在页面http://www.soccerbase.com/teams/head_to_head.sd上的表单中输入两个团队名称,然后测试它是否已成功加载。
问题
我遇到的问题是它返回了这个结果:
java.io.IOException:意外代码:响应{protocol = http / 1.1,code = 503,message = backend read error,url = http://www.soccerbase.com/teams/head_to_head.sd} 在PredictResult.run(PredictResult.java:28) 在PredictResult.main(PredictResult.java:39)
我尝试使用OkHTTP示例代码使用的相同格式。我猜这个问题可能与我没有在HTTP请求中提供足够的数据有关。
代码:
import java.io.IOException;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class PredictResult {
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception{
RequestBody body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("team1_name", "Chelsea")
.addFormDataPart("team2_name", "Manchester")
.build();
Request request = new Request.Builder()
.url("http://www.soccerbase.com/teams/head_to_head.sd")
.post(body)
.build();
try(Response response = client.newCall(request).execute()){
if(!response.isSuccessful())
throw new IOException("unexpected code: " + response);
System.out.println(response.body().string());
}
}
public static void main(String[] args) {
try {
new PredictResult().run();
} catch (Exception e) {
e.printStackTrace();
}
}
}