继上一个android与django交互之后,发现以前上传图片的逻辑有点不好,只能上传单个图片,不能附加别的文本类的消息,因此,再上一个基类的基础上,做了以下修改:
- 先附上原来的基类(一点都没变动):
package com.example.xieyipeng.demo.bean;
import android.util.Log;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class GetPostUtil {
private static String TAG = "GetPostUtil";
/**
* 发送post请求
*
* @param url 发送请求的 URL
* @param data 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return json数据包
*/
public static String sendPostRequest(String url, String data) {
PrintWriter printWriter = null;
StringBuilder result = null;
BufferedReader bufferedReader = null;
try {
URL realUrl = new URL(url);
URLConnection connection = realUrl.openConnection();
// TODO: 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// TODO: 发送POST请求必须设置如下两行
connection.setDoOutput(true);
connection.setDoInput(true);
// TODO: 获取URLConnection对象对应的输出流
printWriter = new PrintWriter(connection.getOutputStream());
// TODO: 发送请求参数
// TODO: flush输出流的缓冲
printWriter.print(data);
printWriter.flush();
Log.e(TAG, "sendPostRequest: Post Request Successful");
// TODO: 定义BufferedReader输入流来读取URL的响应
result = new StringBuilder();
bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
result.append(line);
}
} catch (Exception e) {
Log.e(TAG, "sendPostRequest: " + e.getMessage());
e.printStackTrace();
} finally {
try {
if (printWriter != null) {
printWriter.close();
}
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result.toString();
}
/**
* 发送get请求
*
* @param url eg: http://10.0.2.2:8000/get_test/
* @return 返回服务器的响应
*/
public static String sendGetRequest(String url) {
HttpURLConnection connection = null;
BufferedReader bufferedReader = null;
StringBuilder result = null;
try {
URL realUrl = new URL(url);
//打开链接
connection = (HttpURLConnection) realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");