我有以下带有base64图片内容的JSON字符串。您能帮我如何将该JSON发布为Multipart:
{
"TakeoffID": "2",
"address": ",nexhex",
"city": "Xrk Zed",
"state": "AZ",
"date": "12/08/2015",
"ViewNote": "",
"ViewPhoto1": "base64ImageContent",
"ViewPhoto2": "base64ImageContent",
"ViewPhoto3": "base64ImageContent",
"TakeoffDoneBy": "Jxehx",
"AcctName": "Gsgve",
"LoginUserID": "46669",
"jobId": "whshs",
"LineItems": [
{
"OrderLineid": "544",
"OrderLineTypeid": "Post Light",
"OrderLineQty": "2",
"OrderLinePhoto1": "base64ImageContent",
"OrderLinePhoto2": "base64ImageContent",
"OrderLinePhoto3": "base64ImageContent",
"OrderLineNotes": "",
"OrderLineLocation": "Post Lights"
}
]
}
一种简单的方法是,首先将您的请求json转换为简单的地图,例如
Map<String, String> map = new HashMap<>();
对于“ LineItems”:将“ LineItems”作为键,并将json的值作为字符串格式并添加到此映射中。
然后使用以下方法调用Webservice。
private JSONObject sendRequest(String urlString, Map<String, String> map, String fileKey, File file) {
StringBuilder strData= null;
JSONObject resObj = null;
try {
Log.i("Send request", urlString+"="+map);
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(50000);
conn.setConnectTimeout(50000);
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
if(map == null)
{
map = new HashMap<>();
}
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
for (HashMap.Entry<String, String> entry : map.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
reqEntity.addPart(k, new StringBody(v));
}
if(file != null && !TextUtils.isEmpty(fileKey))
{
FileBody filebody = new FileBody(file, "image/*");
reqEntity.addPart(fileKey, filebody);
}
conn.setRequestProperty("Connection", "Keep-Alive");
conn.addRequestProperty("Content-length", reqEntity.getContentLength() + "");
conn.addRequestProperty(reqEntity.getContentType().getName(), reqEntity.getContentType().getValue());
OutputStream os = conn.getOutputStream();
reqEntity.writeTo(os);
os.close();
conn.connect();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String sResponse;
strData = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
strData = strData.append(sResponse);
}
}
if(strData != null)
resObj = new JSONObject(strData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return resObj;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句