我在:
>
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来替换它,因为它来自项目外部,所以我对它有一些问题,你认为呢?
您可以使用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