首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用JSON参数通过HttpURLConnection向服务器发送请求

如何使用JSON参数通过HttpURLConnection向服务器发送请求
EN

Stack Overflow用户
提问于 2016-04-04 14:28:38
回答 1查看 138关注 0票数 0

我需要使用HttpURLConnection将json请求发送到服务器以上传图像。对于HttpClient,它工作得很好。但是我想向HttpURLConnection和MultipartEntity.any one提出一个请求,帮助我..

下面是HttpClient的代码:

代码语言:javascript
运行
复制
public class MultiPartRequest extends AsyncTask<Object, Integer, JSONObject> {

private AsyncHttpCallback listener;
private final String TAG = "HTTP_MULTIPART";
private Activity activity;

public MultiPartRequest(Activity activity) {
    this.activity = activity;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
}

@Override
protected JSONObject doInBackground(Object... inputParams) {
    String requestUrl = (String) inputParams[0];
    JSONObject multipartParams = (JSONObject) inputParams[1];
    HashMap<String, Object> requestObject = (HashMap<String, Object>) inputParams[2];
    HttpClient httpClient = new DefaultHttpClient();
    JSONObject finalResult = new JSONObject();
    try {
        finalResult = new JSONObject("{\"error\":true,\"message\":\"Something went wrong\"}");
        HttpPost httpPost = new HttpPost(requestUrl);
        StringEntity entity = new StringEntity(multipartParams.toString());
        entity.setContentType("application/json");
        httpPost.setEntity(entity);
        // httpPost.setParams(multipartParams);
        MultipartEntity multipartEntity = new MultipartEntity();

        for (Entry<String, Object> obj : requestObject.entrySet()) {
            String fileName = obj.getKey();
            Log.d("Multipart", fileName);
            if (fileName.equalsIgnoreCase("data")) {
                Log.d("objectdata", obj.getValue().toString());
                multipartEntity.addPart(fileName, (StringBody) obj.getValue());
            } else {
                multipartEntity.addPart(fileName, (FileBody) obj.getValue());
            }
        }

        httpPost.setEntity(multipartEntity);
        HttpResponse response = httpClient.execute(httpPost);

        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        StringBuilder builder = new StringBuilder();

        for (String line = null; (line = reader.readLine()) != null; ) {
            builder.append(line).append("\n");
        }

        JSONTokener tokener = new JSONTokener(builder.toString());
        finalResult = new JSONObject(tokener);

    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }

    return finalResult;
}

@Override
public void onPostExecute(JSONObject result) {
    Log.d(TAG, "The response object is: " + result.toString());

    try {
        String errorMsg = JSONHandler.getStringFromJSONObject(result, "message");
        if (errorMsg.equalsIgnoreCase("Authentication problem with the token provided") || JSONHandler.getIntFromJSONObject(result, "code") == 5100) {
            MyApplication.displayToast(errorMsg);

            Intent intent = activity.getBaseContext().getPackageManager().getLaunchIntentForPackage(activity.getBaseContext().getPackageName());
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            activity.startActivity(intent);
            return;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    if (result.has("error")) {
        listener.errorCallback(result);
    } else {
        listener.successCallback(result);
    }
}

public void setOnResultsListener(AsyncHttpCallback listener) {
    this.listener = listener;
} }
EN

回答 1

Stack Overflow用户

发布于 2016-04-04 14:34:28

使用Volley将图像发送到服务器。

您可以看到此链接Android Volley Library: How to send an image to server?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36395849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档