用java在Androidstudio实现一个post请求其中包括如何创建字典等并且这输出全部的响应信息要求要用5种方式
- 使用HttpURLConnection进行post请求
public void sendPostRequest() {
try {
URL url = new URL("http://example.com/api");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
connection.setDoOutput(true);
JSONObject jsonObject = new JSONObject();
jsonObject.put("key1", "value1");
jsonObject.put("key2", "value2");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write(jsonObject.toString());
writer.flush();
writer.close();
int responseCode = connection.getResponseCode();
String responseMessage = connection.getResponseMessage();
InputStream inputStream = responseCode < HttpURLConnection.HTTP_BAD_REQUEST ? connection.getInputStream() : connection.getErrorStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
connection.disconnect();
Log.d("HttpURLConnection", "Response Code: " + responseCode);
Log.d("HttpURLConnection", "Response Message: " + responseMessage);
Log.d("HttpURLConnection", "Response Body: " + response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
- 使用OkHttp进行post请求
public void sendPostRequest() {
try {
OkHttpClient client = new OkHttpClient();
JSONObject jsonObject = new JSONObject();
jsonObject.put("key1", "value1");
jsonObject.put("key2", "value2");
RequestBody requestBody = RequestBody.create(jsonObject.toString(), MediaType.parse("application/json; charset=UTF-8"));
Request request = new Request.Builder()
.url("http://example.com/api")
.post(requestBody)
.build();
Response response = client.newCall(request).execute();
int responseCode = response.code();
String responseMessage = response.message();
String responseBody = response.body().string();
Log.d("OkHttp", "Response Code: " + responseCode);
Log.d("OkHttp", "Response Message: " + responseMessage);
Log.d("OkHttp", "Response Body: " + responseBody);
} catch (Exception e) {
e.printStackTrace();
}
}
- 使用Volley进行post请求
public void sendPostRequest() {
try {
RequestQueue queue = Volley.newRequestQueue(this);
JSONObject jsonObject = new JSONObject();
jsonObject.put("key1", "value1");
jsonObject.put("key2", "value2");
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, "http://example.com/api", jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Volley", "Response Body: " + response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Volley", "Error: " + error.toString());
}
});
queue.add(request);
} catch (Exception e) {
e.printStackTrace();
}
}
- 使用Retrofit进行post请求
public interface ApiService {
@POST("api")
Call<ResponseBody> post(@Body JSONObject jsonObject);
}
public void sendPostRequest() {
try {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://example.com/")
.addConverterFactory(ScalarsConverterFactory.create())
.build();
ApiService apiService = retrofit.create(ApiService.class);
JSONObject jsonObject = new JSONObject();
jsonObject.put("key1", "value1");
jsonObject.put("key2", "value2");
Call<ResponseBody> call = apiService.post(jsonObject);
Response<ResponseBody> response = call.execute();
int responseCode = response.code();
String responseMessage = response.message();
String responseBody = response.body().string();
Log.d("Retrofit", "Response Code: " + responseCode);
Log.d("Retrofit", "Response Message: " + responseMessage);
Log.d("Retrofit", "Response Body: " + responseBody);
} catch (Exception e) {
e.printStackTrace();
}
}
- 使用AsyncTask进行post请求
public class PostAsyncTask extends AsyncTask<Void, Void, String> {
private String url;
private JSONObject jsonObject;
public PostAsyncTask(String url, JSONObject jsonObject) {
this.url = url;
this.jsonObject = jsonObject;
}
@Override
protected String doInBackground(Void... voids) {
try {
URL url = new URL(this.url);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
connection.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write(this.jsonObject.toString());
writer.flush();
writer.close();
int responseCode = connection.getResponseCode();
InputStream inputStream = responseCode < HttpURLConnection.HTTP_BAD_REQUEST ? connection.getInputStream() : connection.getErrorStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
connection.disconnect();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.d("AsyncTask", "Response Body: " + s);
}
}
public void sendPostRequest() {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("key1", "value1");
jsonObject.put("key2", "value2");
new PostAsyncTask("http://example.com/api", jsonObject).execute();
} catch (Exception e) {
e.printStackTrace();
}
}
原文地址: https://www.cveoy.top/t/topic/bwym 著作权归作者所有。请勿转载和采集!