如何使用post方法

时间:2016-09-07 04:38:16

标签: java web-services

public static String[] Webcall(String emailID) {
        try {
            URL url = new URL(AppConfig.URL + emailID);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Accept", "application/json");
            conn.setRequestProperty("Authorization", "application/json");
            conn.setRequestProperty("userEmailId", emailID);
            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }

            conn.disconnect();

            org.json.JSONObject _jsonObject = new org.json.JSONObject(output);
            org.json.JSONArray _jArray = _jsonObject.getJSONArray("manager");
            String[] str = new String[_jArray.length()];

        } catch (MalformedURLException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }
        return null;

    }

这是我的代码我试图调用Web服务并获取数据。

但是当我点击网络服务时,我就会遇到异常

  

失败:HTTP错误代码:404

请建议我在哪里做错了尝试为此提供解决方案。

3 个答案:

答案 0 :(得分:0)

第一件事是检查网址是否使用postman或restclient在计算机上工作,如果工作正常,则尝试使用下面的代码发布,此代码用于使用 HttpPost 以json格式发布数据你可以像Milad建议的那样使用改造lib。

public static String POST(String url, String email)
{
        InputStream inputStream = null;
        String result = "";
        try {
            // 1. create HttpClient
            HttpClient httpclient = new DefaultHttpClient();

            // 2. make POST request to the given URL
            HttpPost httpPost = new HttpPost(url);
            String json = "";
            // 3. build jsonObject
            JSONObject jsonObject = new JSONObject();
            jsonObject.accumulate("email", email);
            // 4. convert JSONObject to JSON to String
            json = jsonObject.toString();
            // 5. set json to StringEntity
            StringEntity se = new StringEntity(json);

            // 6. set httpPost Entity
            httpPost.setEntity(se);

            // 7. Set some headers to inform server about the type of the content   
            httpPost.setHeader("Accept", "application/json");
            httpPost.setHeader("Content-type", "application/json");

            // 8. Execute POST request to the given URL
            HttpResponse httpResponse = httpclient.execute(httpPost);

            // 9. receive response as inputStream
            inputStream = httpResponse.getEntity().getContent();

            // 10. convert inputstream to string
            if(inputStream != null)
                result = convertInputStreamToString(inputStream);
            else
                result = "Did not work!";

        } catch (Exception e) {
            Log.d("InputStream", e.getLocalizedMessage());
        }

        // 11. return result
        return result;
    }



private static String convertInputStreamToString(InputStream inputStream) throws IOException{
        BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
        String line = "";
        String result = "";
        while((line = bufferedReader.readLine()) != null)
            result += line;

        inputStream.close();
        return result;

    }  

答案 1 :(得分:0)

我认为您应该尝试重新检查您发送请求的网址。 按照输出错误,代码404表示URL已损坏或死链接。

答案 2 :(得分:0)

你可以使用jersy-client和jersy core来做同样的事情。这是代码片段

    private static void generateXML(String xmlName, String requestXML, String url)
  {
    try
    {
      Client client = Client.create();
      WebResource webResource = client
        .resource(url);
      ClientResponse response = (ClientResponse)webResource.accept(new String[] { "application/xml" }).post(ClientResponse.class, requestXML);
      if (response.getStatus() != 200) {
        throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
      }
      String output = (String)response.getEntity(String.class);
      PrintWriter writer = new PrintWriter(xmlName, "UTF-8");
      writer.println(output);
      writer.close();
    }
    catch (Exception e) {
      try {
        throw new CustomException("Rest-Client May Be Not Working From Your System");
      } catch (CustomException e1) {
        System.exit(1);
      }
    }
  }

使用varibales从代码中调用此方法。