如何从HttpPost获得响应

时间:2016-04-29 07:39:18

标签: java android

我想从httppost请求中获得响应。我得到网络响应像200,405,404但我没有得到来自服务器的价值。我尝试了很多,但我没有得到回应。请帮忙......

我的代码在下面 -

private void UploadPost(){

        SharedPreferences sharedPreferences1 = getSharedPreferences("DATA", Context.MODE_PRIVATE);
        String ID = sharedPreferences1.getString("id", "");
        @SuppressWarnings("deprecation")
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(Url.addOffer_url);

        Log.e("uploadFile", "Source File Path " + picturePath);
        File sourceFile1 = new File(picturePath);
        if (!sourceFile1.isFile()) {
            Log.e("uploadFile", "Source File Does not exist");
            imgUploadStatus = "Source File Does not exist";
        }


        try {
            AndroidMultiPartEntity entity = new AndroidMultiPartEntity();
            File sourceFile = new File(picturePath);
            MultipartEntity entity1 = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);
            // Adding file data to http body


            entity.addPart("retailer_id", new StringBody(ID));
            entity.addPart("title", new StringBody(addoffertitle));
            entity.addPart("description", new StringBody(addofferdesc));
            entity.addPart("keyword", new StringBody(addofferkeyword));
            entity.addPart("offer_id", new StringBody(OfferListing_Id));
           // entity.addPart("payment_status",new StringBody(paymentStatus));
            // if(!picturePath.equals(""))
            entity.addPart("offer_image", new FileBody(sourceFile));
           /* else
                entity.addPart("old_pic",new StringBody(Image_Path));*/
            httppost.setEntity(entity);

            Log.d("httppost success", "httppost");

            //Run a api for net conn check
            try {

                String responseString= new String();
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity8 = response.getEntity();
                if(entity8 !=null){
                    responseString = EntityUtils.toString(entity8, "UTF-8");
                    System.out.println("Response body: " + responseString);
                }



                statusCode = 200;

            } catch (FileNotFoundException e) {
                Log.e("log_tag1", "Error FileNotFoundException new service" + e.toString());
                result = "FileNotFoundException";
            } catch (SocketTimeoutException e) {
                Log.e("log_tag2", "SocketTimeoutException new service " + e.toString());
                result = "SocketTimeoutException";
            } catch (Exception e) {
                Log.e("log_tag3", "Error converting OtherException new service " + e.toString());
                result = "OtherException";
            }


            if (statusCode == 200) {
                // Server response
                responseString = "success";



                Log.e("complete success", "Response from server: " + responseString);
            } else if (statusCode == 404) {
                responseString = "page not found";


                Log.e("complete page not found", "Response from server: " + responseString);

            } else if (statusCode == 405) {
                responseString = "no net";


                Log.e("complete no net", "Response from server: " + responseString);

            } else {
                responseString = "other";


                Log.e("complete other", "Response from server: " + responseString);

            }

        } catch (Exception e) {
            responseString = e.toString();
            responseString = "other";
            Log.e("complete", "Response from server: " + responseString);

        }

    }

我想从httppost.i得到响应得到网络响应,但我没有得到来自服务器的价值。我正在尝试很多,但我没有得到回应。请帮助...

2 个答案:

答案 0 :(得分:0)

尝试使用EntityUtils代替BufferedReader。例如,像:

String responseString= new String();
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if(entity !=null){
  responseString = EntityUtils.toString(entity, "UTF-8");
}

查看选定的答案here - 它显示了如何获得400-HTTP响应的响应正文。您还可以查看this example。如果您正在使用JSON有效负载,也许您可​​能要考虑使用Volley - here are some examples for PUT, POST, and GET requests using Volley

答案 1 :(得分:0)

你可以试试这个

 InputStream inputStream = httpResponse.getEntity().getContent();
 InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
 BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
 StringBuilder stringBuilder = new StringBuilder();
 String bufferedStrChunk = null;
 while((bufferedStrChunk = bufferedReader.readLine()) != null){
        stringBuilder.append(bufferedStrChunk);
 }

而不是

HttpEntity entity8 = response.getEntity();
                if(entity8 !=null){
                    responseString = EntityUtils.toString(entity8, "UTF-8");
                    System.out.println("Response body: " + responseString);
                }