[英]How to make a simple http post request in Android?
我是 android 的初学者。 我对 java 确实有一些经验,但有一段时间无法解决这个问题。
以下是一些背景信息:我正在尝试制作一个移动应用程序,它从图库或相机中选择图像,然后将其发送到我的服务器。 我完成了选择图像,将其转换为 base64,但不知何故,我无法完成 http 发布请求的 function。 我希望这个 function 从服务器返回响应,但我失败了。
我用评论突出显示了 function 的一部分。 我不明白的部分是重写方法。 正如我所说,我是初学者,Android Studio 让我包含这些方法(OnResponse,OnFailure),使用这些方法我无法返回响应,因为它们是无效的; 如果没有这些方法,我会遇到一个异常,我不知道它来自哪里。
public void postRequest(String postdata) throws IOException {
MediaType MEDIA_TYPE = MediaType.parse("application/json");
String url = "https://ptsv2.com/t/z497u-xxx/post";
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(MEDIA_TYPE, postdata);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
//THIS IS THE PART I DO NOT UNDERSTAND
client.newCall(request).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
message = response.body().string();
}
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
}
});
}
入enqueue
function 在后台线程上执行网络访问。 因此,您无法立即获得结果。 要接收结果,您必须传入一个Callback
实例。 当请求在另一个线程中完成时,OkHttp 将调用您的回调实例的onResponse
function。 如果请求失败,它将调用onFailure
。
如果您需要调用线程中的结果并阻塞直到结果可用,您可以使用调用 class 的execute()
方法。 请注意,这不适用于 Android 的主线程,因为那里不允许网络访问。
Go 通过上面的链接如果你想发布然后只需将参数传递给接口,如下所述
在api接口写
@FormUrlEncoded
@POST("append_url")
Call<CompanyDetailsResponse> getCompanyDetails(@Field("para") String para);
并使用
Call<CompanyDetailsResponse> call = apiService.getCompanyDetails("para");
代替
Call<CompanyDetailsResponse> call = apiService.getCompanyDetails();
并根据您的 json 响应使用 model class 并在有任何查询时删除评论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.