【问题标题】:how to pass query parameters in java with Http client如何使用 Http 客户端在 java 中传递查询参数
【发布时间】:2012-07-02 18:09:40
【问题描述】:

我正在使用给定代码在 java 中使用 GET REST 调用,但我收到错误代码:404 即未找到。但是当我在浏览器中使用相同的 URL 时,我得到了输出并且工作正常。我是 JAVA 的新手。 可能是我错误地传递了查询参数,但我没有得到它。 我在 NETBEANS 7.1.2 中工作。请帮忙。

    import java.io.IOException;
    import java.io.OutputStreamWriter; 
    import java.net.HttpURLConnection; 
    import java.net.URL; 
       public class Test {
          private static String ENDPOINT ="http://wisekar.iitd.ernet.in/active/api_resources.php/method/mynode?";
          public static void main(String[] args) throws IOException 
          { 
              URL url = new URL(ENDPOINT + "key=" + "mykey"  );
              HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); 
              httpCon.setDoOutput(true);
              httpCon.setRequestMethod("GET");
             OutputStreamWriter out = new OutputStreamWriter( httpCon.getOutputStream());
             System.out.println(httpCon.getResponseCode());
             System.out.println(httpCon.getResponseMessage());
             out.close(); 
          }
   }

这里mykey是网站给我的key。

我还想在输出窗口或控制台上打印响应消息。因为我想在将来存储它以进行一些提取。 请帮忙。

【问题讨论】:

    标签: java http rest get


    【解决方案1】:

    这是您的代码.. 使用它。它以401-Unauthorised 的形式向我提供响应,并在浏览器URL 上提供相同的响应,这可能会导致VPN 出现其他一些问题。如果你使用

    private static String ENDPOINT ="http://google.com"; 
    

    它会给你200-OK

    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    
           public class Test {
              private static String ENDPOINT ="http://wisekar.iitd.ernet.in/active/api_resources.php/method/mynode";
              public static void main(String[] args) throws IOException 
              { 
                  String url = ENDPOINT;
                  String charset = "UTF-8";
                  String param1 = "mykey";
    
                  String query = String.format("key=%s", 
                       URLEncoder.encode(param1, charset));
                  java.net.URLConnection connection = new URL(url + "?" + query).openConnection();
                  connection.setRequestProperty("Accept-Charset", charset);
                  if ( connection instanceof HttpURLConnection)
                  {
                     HttpURLConnection httpConnection = (HttpURLConnection) connection;
                     System.out.println(httpConnection.getResponseCode());
                     System.out.println(httpConnection.getResponseMessage());
                  }
                  else
                  {
                     System.err.println ("error!");
                  }
              }
       }
    

    【讨论】:

    • 您好,我阅读了有关 web 服务(发布和获取)的信息,并获得了一些很好的知识。而且我已经使用soapUI 工具来进行GET 服务调用,这很容易。因为它是一个工具,它可以在没有太多代码编写的情况下正常工作。查看上面的代码,我想我可以使用 HTTPClient 和 HTTPUrlconnection CLASSES 并编写 java 代码以在必要时替换输入并进行一些 GET 和 POST 调用。如果我不想使用 SOAPUI 工具,请告诉我这样做是否好。
    • 是的,您可以使用它。它与通话频率和数据负载有关。
    • 感谢您的快速回复;能否请您详细说明通话频率?
    • 您的代码/程序对目标 URL 的调用的可重复性或对服务器的请求频率。
    猜你喜欢
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 2020-11-20
    • 2013-09-03
    • 2014-12-21
    相关资源
    最近更新 更多