当前位置: 首页 > 知识库问答 >
问题:

带有Java的HTTP请求

吴高畅
2023-03-14

我在:

>

  • http://developer.yahoo.com/blogs/ydn/important-api-updates-changes-8060.html

    http://developer.yahoo.com/boss/search/

    http://tech.groups.yahoo.com/group/ysearchboss/msearch?query=http要求

    http://developer.yahoo.com/java/howto-reqRestJava.html

    我发现在2008年,雅虎对java编程的http方法做了一个改变,即对单词“umbrable”进行了修改:

    “字符串请求=”http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=YahooDemo

    关于:

    HttpClient client = new HttpClient();
    
            GetMethod method = new GetMethod(request);
    
    
            // Send GET request
    
            int statusCode = client.executeMethod(method);
    

    等等现在他们有了BOSS搜索API,但到目前为止,我还没有找到任何关于:

    “如何在雅虎搜索引擎中从java发出HTTP请求?”

    ps:请记住,雅虎做了一些加密搜索和类似urlencoder的东西。编码(查询)不起作用。

    有谁能告诉我这件事吗?提前感谢!=]

    编辑一个:找到这个“http://developer.yahoo.com/boss/search/boss_api_guide/codeexamples.html#oauth_java“在雅虎开发者,我试图回答我自己的问题。

    编辑一:

    try {
    
    
        WebSearch ws = new WebSearch();
    
        ws.search(userQuery);
    
        List<WebSearchResult> results = ws.getResults();
    
        for(WebSearchResult result : results){
             System.out.println(result.getTitle());
        }
    
        // Setup connection properties (this doesn't open the connection)
        URLConnection connection = url.openConnection();
        connection.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1.6) Gecko/20070723 Iceweasel/2.0.0.6 (Debian-2.0.0.6-0etch1)");
    
        //Setup a reader
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    
        //Read line by line
        String line = null;
        while ((line = reader.readLine()) != null) {
        System.out.println (line);
        }
        //Close connection
        reader.close();
    }
    

    控制台上报告的错误:

    异常在线程AWT-EventQuue-0com.jellymold.boss.util.BOSSException: IO异常在omponent.processWebSjava.awt.(WebSearch.java:103)在java.awt.WebSomponent.dispatch(WebSjava.awt.)在ontainer.dispatchHttpRequest。(HttpRjava.awt.)在omponent.dispatchEventSearch$java.awt.执行(EventSearch.java:32)在javax.swing.SwingUtilities.notify动作(未知来源)在javax.swing.JComponent.processKeyBding(未知来源)在javax.swing.JComponent.processKeyBindings(未知来源)在javax.swing.JComponent.processKeyEvent(未知来源)在earch.searchCcom.jellymold.boss.事件(未知来源)在com.jellymold.boss.Cearch.searchEventImpl(未知来源)在earch.java:66Ccom.sh.st.EventImpl(未知来源)在equest.java:33Ccom.sh.st.事件(未知来源)在1.actionKeyboardFocus usM事件(未知来源)在java. awt默认KeyboardManager. preDispatchKeyEvent(未知来源)在java.java. awt上的WindowsEventImpl(未知源)。java. awt上的Component.调度事件(未知源)。java. awt上的EventQueueEventImpl(未知源)。EventQueue3 dollars. run(未知源)在java. awt上。java. awt上的EventQueue3 dollars. run(未知源)。java. security上的AccessController. doPrivileged(Native Method)。java. security上的ProttionDomain1美元。doIntersectionPrivilge(未知源)。java. awt上的保护域1美元。doIntersectionPrivilge(未知源)。java. awt上的EventQueue4美元。java. awt上的运行(未知源)。EventQueue4美元。java. security上的运行(未知源)。AccessController. doPrirIOException:IO Exceptionboss. yahooapis. com在com. jellymold. boss. util。com. jellymold. boss. WebSearch. search(WebSearch. java: 92)...39更多

    编辑二:

     public int sendGetRequest(String url) throws IOException{
            //int ret = 500;
            try {
                URL u = new URL(url);
                HttpURLConnection uc = (HttpURLConnection) u.openConnection();
                uc.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1.6) Gecko/20070723 Iceweasel/2.0.0.6 (Debian-2.0.0.6-0etch1)");
                // ret = uc.getResponseCode();
               // if(200==ret){
                    BufferedReader rd = new BufferedReader(new InputStreamReader(uc.getInputStream()));
                    StringBuffer sb = new StringBuffer();
                    String line;
                    while ((line = rd.readLine()) != null) {
                        sb.append(line);
                  //  }
                    rd.close();
                    setResponseBody(sb.toString());
                }
            }catch (MalformedURLException ex) {
                throw new IOException(url+" is not valid");
            }catch (IOException ie) {
                throw new IOException("IO Exception" + ie.getMessage());
            }
            return ret=0;
        }
    

    看看这段来自javaboss API的代码-我对其进行了更改以设置阅读器-值来自uc。getResponseCode();为零。它位于“主”类名bosssearch中。这意味着if总是不同于200,返回值总是零。。。我认为这可能会破坏代码,但现在我需要将java文件导出为jar来替换它,因为它来自项目外部,所以我对它有一些问题,你认为呢?

  • 共有1个答案

    空谦
    2023-03-14

    您可以使用javaboss对Yahoo!搜索引擎:

    WebSearch ws = new WebSearch();
    
    ws.search("your_search_keywords_here");
    
    System.out.println("Total hits : " + ws.getTotalResults());
    
    //get a list of results
    List<WebSearchResult> results = ws.getResults();
    
    //iterate over the list and print every result title
    for(WebSearchResult result : results){
         System.out.println(result.getTitle());
    }
    

    但是,您应该设置用户代理来发出此类请求,而不会出现403错误,正如我在回答您之前的一个问题(Google search from java request)时所解释的那样

     类似资料:
    • 问题内容: 如何使用与以下代码等效的node.js发出Http请求: 问题答案: 使用http客户端。 遵循以下原则:

    • 问题内容: 我必须使用已经生成的JSON字符串发出http Post请求。我尝试了两种不同的方法: 但是我从两个人那里得到了相同的“不需要的”结果。到目前为止,我使用 HttpURLConnection的 代码是: 到目前为止,我使用 HttpClient的 代码是: 生成的JsonString如下所示: 我得到的答复是: 有什么想法吗? 问题答案: 最后,我设法找到了解决问题的方法…

    • 问题内容: 我有一个Android应用程序,当前正在使用库来发出网络请求并使用来显示下载的图像。 我想测试的功能,由于我需要运行大量请求(数千个),因此我有点担心并行执行。处理的并行请求,将并行运行的请求限制为四个,而其他请求排队等待执行。在文档中,我找不到任何方法来处理并发请求的数量,而且我怀疑此类详细信息留给了此库中的开发人员。 这样对吗?如果是这样,是否有任何面向Android的实现/库可用

    • 我们公司有一个基于.NET的网站 几天前,我们向网站程序员请求一个webservice。昨天他给了我一个URL 当我从localhost打开URL时,它显示了一个页面,我可以从我们请求编程的四个方法(函数)中选择一个。 通过选择其中一个,一个新的页面显示如下: SOAP 1.1 以下是SOAP 1.1请求和响应示例。显示的占位符需要用实际值替换。 POST/webservices/findstat

    • 我正在尝试向正在运行的本地服务器发出GET请求。我无法返回正确的数据,我看到“未经授权”的响应。如果字符串“token”是正确的,那么任何人都能发现任何明显的问题吗。 }* 我能够从命令行获得一个curl请求:

    • 问题内容: 我正在为我们的应用程序开发新的RESTful Web服务。 在某些实体上执行GET时,客户端可以请求实体的内容。如果他们想添加一些参数(例如,对列表进行排序),则可以在查询字符串中添加这些参数。 另外,我希望人们能够在请求正文中指定这些参数。 HTTP / 1.1似乎并未明确禁止这样做。这将使他们能够指定更多信息,可能使指定复杂的XML请求更加容易。 我的问题: 这是个好主意吗? HT