• HTTP Client 编写


    手头生正好有一个HTTP Client例子,使用socket 连接。代码如下:

    运行上述代码,返回如下:

    IP Address is : 211.100.26.77
    HTTP/1.1 302 Moved Temporarily
    Server: nginx/0.7.65
    Date: Fri, 02 Jul 2010 14:27:19 GMT
    Content-Type: text/html
    Content-Length: 161
    Connection: keep-alive
    Location: http://www.csdn.net/

    <html>
    <head><title>302 Found</title></head>
    <body bgcolor="white">
    <center><h1>302 Found</h1></center>
    <hr><center>nginx/0.7.65</center>
    </body>
    </html>

    这个代码基本上是一个最原始的http clinet,模拟了http协议,比如协议头。但是这段代码有几个问题:

    首先不能解析动态网页,如aspx等(不知道为什么,请知道的朋友告知,谢谢!)。

    其次,服务器返回的是一个二进制byte[],你需要自己解析得到的你需要的内容。

    因为我需要拿到的是一个二进制的png图片文件,并不关心头信息,如果能有一个library直接提供解析功能就好了。

    Apache common HttpClient 库提供了很好的封装,因此非常简单的几行代码(不及异常处理)就可以了。

    但是这个代码有时会给出如下警告:

    Jul 2, 2010 11:42:34 AM org.apache.commons.httpclient.HttpMethodBase getResponseBody
    WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.

    按照提示应该使用getResponseBodyAsStream。其中最后还有一个将byte[]生成图片并显示,并且判断图片大小后,重新设置图片大小的。下面是我的完整实例:

    参考:

    http://hc.apache.org/httpclient-3.x/tutorial.html

    http://hc.apache.org/httpclient-3.x/apidocs/index.html

  • 相关阅读:
    128-django的注册和登录【2】:注册和登录的初步实现
    127-django的注册和登录【1】:尝试使用预设的User类
    126-对已添加文章的编辑,编辑完成后呈现此文章
    125-django的标签,条件过滤
    124-django的翻页/分页功能,使用Paginator
    123-在前端添加评论,显式地指定绑定关系
    122-django不依赖后台,在前端添加文章(提交后跳转到其他页面)
    二叉树及遍历方式详解
    由一个算法引发的hash讲解
    Java基础知识总结
  • 原文地址:https://www.cnblogs.com/ainima/p/6331333.html
Copyright © 2020-2023  润新知