android - 如何使用 HttpURLConnection 在 android 中使用 POST 方法上传数据?
问题描述
我有 2 个 json 数组,其中一个是字符串格式的图像和位图名称。另一种是带有一些用户数据的字符串。如何将该数据传递到 laravel 站点?
JSONArray jsonImage = new JSONArray();
for(int i=0; i<imageList.size(); i++){
JSONObject imgObj = new JSONObject();
String imageBitmap = imageList.get(i).getimageBitmap();
String imageName = imageList.get(i).getImage_name();
imgObj.put("imageName",imageName);
imgObj.put("imageBitmap", imageBitmap);
jsonImage.put(imgObj);
}
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
}
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Calendar calendar = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = format.format(calendar.getTime());
final String jsonStringArray = jsonArray.toString();
final String jsonImageString= jsonImage.toString();
URL url = new URL(AppState.DEV_URL + AppState.DEV_API + "storeAnswer");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type","application/json");
conn.connect();
JSONObject data = new JSONObject();
data.put("token", Uri.encode(UserLocalStore.userLocalStore.getToken()));
data.put("latitude", Uri.encode(String.valueOf(latitude)));
data.put("longitude",Uri.encode(String.valueOf(longitude)));
data.put("answers", Uri.encode(jsonStringArray));
data.put("images", Uri.encode(jsonImageString));
data.put("time", Uri.encode(formattedDate));
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(data.toString());
out.close();
解决方案
推荐阅读
- linux - 使用模式批量重命名文件(在位置添加连字符)
- python - 强制类型标识的默认参数
- java - 如何获取上一条消息(使用 JAVA 的 Telegram Bot)
- apache-spark - 如何从 Spark 结构化流作业中的每个微批次中的相同起始偏移量读取?
- .net - 如何将“dotnet restore”与需要进行身份验证的提要一起使用?
- xml - DB2 存储过程优化器未使用最有效的索引
- python - 将 Python 项目提交到 Dataproc 作业
- javascript - 检查字符串中的单词是否与数组中的单词匹配,如果匹配则将其从字符串中删除
- javascript - 否则,角度选择类
- python - Python解析xml找不到元素