最近做一个项目需要调用网络上的资料,是别的公司提供的一个url接口。我们只要拼URL,然后去访问就OK了!
看起来很简单的调用,却弄了好长时间也算搞定,但是办法也不是很好!
一开始直接用URLConnection进行读操作。(加上代理)
java 代码
- System.getProperties().put("proxySet","true");
- System.getProperties().put("proxyHost","IP");
- System.getProperties().put("proxyPort","PORT");
- URLConnection huc = url.openConnection();
- huc.setDoInput(true);
- StringBuffer str = new StringBuffer();
- BufferedReader in=new BufferedReader(new InputStreamReader(huc.getInputStream()));
- String inputLine;
- while((inputLine=in.readLine())!=null)
- str.append(inputLine);
- in.close();
运行发现,验证用户的URL没有问题,但在读用户信息的URL时,却很长时间没有反应,过了大约5分钟左右报502错误
502:是Bad gate way ,应该是网关错误。开始以为是我们的代理不行。然后就用拨号来试。却发现结果是相同的!
还以为是URL错误,然后把URL打在浏览器里进行尝试,却发现成功了。
于是认为是URLConnection这个类的功能不够强大,容错性不行。
并下httpClient来试,(抱怨一声httpClient的版本太多了,还要code一起运行),终于写好了,尝试运行,
java 代码
- StringBuffer str = new StringBuffer();
- httpclient = new DefaultHttpClient();
-
-
-
-
-
-
-
-
-
-
-
- HttpGet httpget = new HttpGet(urlStr);
- HttpResponse response = httpclient.execute(httpget);
-
- HttpEntity entity = response.getEntity();
-
-
-
- if (entity != null) {
- BufferedInputStream bis = new BufferedInputStream(entity.getContent());
-
- byte[] b = new byte[1024];
- int i=-1;
- while((i=bis.read(b))!=-1){
- str.append(new String(b,0,i));
- }
- }
-
-
- if (entity != null) {
- entity.consumeContent();
- }
还是不行,同样的问题
于是想是不是这个接口做了控制,(因为浏览器访问从来都是正确结果的),于是想办法封闭请求,便有了下面的代码
java 代码
- HttpHost targetHost = new HttpHost("serverip", serverpot, "http");
- HttpHost proxy = new HttpHost("ip", port);
- HttpRoute route = new HttpRoute(targetHost, null, proxy, false);
- HttpGet httpget = new HttpGet("/.......");*/
- httpget.setHeader("Accept","image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*");
- httpget.setHeader("Accept-Language","zh-cn");
- httpget.setHeader("UA-CPU","x86");
- httpget.setHeader("Accept-Encoding","gzip,deflate");
- httpget.setHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)");
- httpget.setHeader("Host","serverip:serverpot");
- httpget.setHeader("Proxy-Connection", "Keep-Alive");
- RoutedRequest routedReq = new RoutedRequest.Impl(httpget, route);
便下载了请求的拦截器,拦截请求,使得它发出的请求和浏览器的相同,可结果令人失望。(要绝望了)
这时发现,httpclient的重试功能,第二次重试可以成功访问。但中间的时间却有5分钟之久,于是便想减少超时时间
也许我没找到,或者资料不全,硬是没找到(注:httpcomponents-client-4.0-alpha1-bin,httpcomponents-core-4.0-alpha5-bin用的这两个包来做的)
于是自己创线程20秒访问不了,就关掉上一个线程,再重试,代码下:
java 代码
运行了一下,结果还行,就是这个办法不规范啊!(最后还有编码问题,郁闷死了)。唉!
还有关于这个问题,我了贴子问问的,可怎么老是被放到入门贴呢,还扣分。呵呵。但问题总算有个说法了!
分享到:
相关推荐
URL解码则相反,它将编码后的URL还原成可读的形式。解码时,会找到所有形如"%xy"的序列,将它们转换回对应的ASCII字符。例如,"%20"会被转换为空格。 在编程中,许多语言都提供了内置函数来处理URL编码和解码。例如...
标题 "URL 重写类 url class" 涉及的核心技术是 URL 重写,这是一种优化网站 URL 结构,使其更美观、更易读的方法。在网页开发中,URL 重写通常用于实现 SEO(搜索引擎优化)友好和用户友好的网址。通过 URL 重写,...
解码时,程序会将URL编码的字符串还原为可读的字符形式。这对于开发者、网页设计师或者需要处理URL的任何人来说都非常实用,例如在处理查询参数、构建链接或分析网页请求时。 在标签“URL编码”下,我们可以进一步...
这样的改动不仅使得URL更加简洁易读,同时也有利于网站的管理和用户的友好体验。 #### 三、URL标准化 **URL标准化**是为了避免搜索引擎对同一内容的多个URL进行重复抓取和索引,从而导致权重分散的问题。例如,...
URL编码是为了使URL在网络传输中可读和可解析,而HTML编码则是在HTML文档中防止浏览器错误解析字符,比如防止`被解析为开始标签。 总的来说,URL转义字符是URL编码的核心,它使得URL能够安全地包含各种字符,无论是...
URL重写是Web开发中的一种技术,主要用于优化和简化用户在浏览器中输入的网址,使其更易读、更美观。这种技术通常与服务器配置、尤其是Apache HTTP Server或IIS等Web服务器上的设置密切相关。在本案例中,"自己写的...
- 错误处理:设置404错误页面,处理未找到的URL。 通过理解和应用这些URL映射技术,开发者能够构建出更加用户友好、搜索引擎友好的Web应用,提高用户体验和网站的可见性。在实际开发中,灵活运用这些原理和技巧,...
- 查询参数:URL中的查询字符串(即问号后部分)需要编码,以防止特殊字符引起解析错误。 - 链接拼接:在生成动态链接时,需要编码参数以避免特殊字符导致的URL解析问题。 5. **易语言特色**: 易语言提供了丰富...
6. **URL美化**:使URL更简洁、易读,提高用户友好度。 7. **强制登录**:对于某些特定页面,未登录用户访问时可以重定向到登录页面。 8. **URL参数管理**:可以根据需要添加、删除或修改URL参数。 总的来说,URL...
通过在web.xml中配置UrlRewriteFilter,我们可以定义一系列规则来转换请求的URL,使得原本复杂的动态URL变得简洁易读。 Struts2是一个流行的MVC框架,它的Action机制允许开发者通过不同的URL来调用不同的业务逻辑。...
4. **错误处理**:当请求失败时,API通常会返回一个错误代码,开发者可以根据这个错误代码进行错误处理。 在易语言中,实现Http读文件API的一般步骤如下: 1. **初始化HTTP客户端**:调用相关函数创建HTTP客户端...
URL解码是一种处理URL中编码字符的过程,使得原本被编码的数据能够恢复为人类可读的形式。 URL通常由以下几部分组成: 1. 协议:如HTTP、HTTPS、FTP等,定义了数据传输的方式。 2. 主机名:如www.example.com,标识...
- 错误处理:合理设置错误页面,当URL重写失败时,提供友好的错误提示。 - 性能影响:虽然`URLRewrite`提供了很多便利,但过多的重写规则可能会对服务器性能造成一定影响,应适当优化规则。 以上就是关于`URL...
2. **友好的URL**:使URL更易读,提升用户体验。 3. **隐藏真实路径**:隐藏敏感信息或内部结构,增加安全性。 4. **错误页面重定向**:自动处理404等错误页面,提供统一的错误提示。 5. **会话管理**:在URL中隐式...
否则,不进行编码可能会导致URL解析错误或加载失败。 五、注意事项 1. 要始终明确指定字符编码(如UTF-8),否则可能会出现乱码问题。 2. URL编码不应改变URL的有效部分,如协议(http/https)、域名和路径。 3. ...
8. **解密异常处理**:在解密过程中,可能会遇到无效的数据或密钥错误。此时,应该捕获并处理`CryptographicException`等异常,以确保应用程序的健壮性。 9. **最佳实践**:除了加密,还可以考虑使用HTTPS协议,它...
### JavaScript 获取 URL 参数详解 #### 一、引言 在Web开发中,通过URL传递参数是一种常见的场景。例如,在用户点击某个链接或者提交表单之后,我们常常需要从URL中提取出特定的信息来完成后续的操作。JavaScript...
1. **URL重写**:URL重写允许将不友好的URL转换为更易读、更具描述性的URL,提高用户体验。例如,将动态参数化的URL(如`example.com/?id=123`)重写为静态的URL(如`example.com/article/123`),使页面更容易理解...
8. **错误处理和调试**:设置不当的重写规则可能导致404错误或其他问题,因此调试和测试是URL重写过程中的重要环节。开发者需要确保所有预期和非预期的URL都能正确重写。 9. **跨平台支持**:虽然这里提到的...