http服务器于浏览器简单的沟通,发送图片

在yg帮助下用Java做的,读取本地一张图片,发给浏览器(Client)

import javax.imageio.stream.FileImageInputStream;
import java.io.* ;
import java.net.* ;

public class Phttpd{
    public static void main(String[] args) throws  IOException{
        ServerSocket servsock;
        Socket sock ;
        OutputStream out ;
        BufferedReader in ;
        FileInputStream infile = null;
        byte[] buff = new byte[1024];
        boolean cont;
        int i ;
        File file=new File("/Users/hwg/Desktop/大三上/EX2_NETWORK/web/a.html");
        try{
            servsock = new ServerSocket(8099);
            while(true){
                sock = servsock.accept();
                try{
                    infile = new FileInputStream(file) ;
                }
                catch(FileNotFoundException e){
                    System.err.println("No found the file!!") ;
                    e.printStackTrace();
                }
                in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
                out = sock.getOutputStream() ;

                for(i=0;i<2;i++) {
                    System.out.println(in.readLine());
                }
                cont = true ;
                //响应报文
                out.write("http/1.1 200 OK\r\n".getBytes());
                out.write("Content-Type: image/jpeg;\r\ncontent-length: 144759\r\n".getBytes());
                out.write("\r\n".getBytes());
                /**
                 * 写图片
                 *
                 */
                String img="/Users/hwg/Desktop/IMG_2111.jpeg";
                FileInputStream fiis=new FileInputStream(new File(img));
                int it=0;
                while ((it=fiis.read(buff))!=-1){
                    out.write(buff);
                }
                out.flush();
                fiis.close();
                sock.close() ;
                infile.close() ;
            }
        }catch(IOException e){
            e.printStackTrace();
            System.exit(1) ;
        }
    }
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在使用 Python 的 requests 库发送 HTTP 请求时,可以使用 headers 参数来携带 HTTP 请求头信息。 HTTP 请求头信息包含了有关客户端浏览器、操作系统、接受的内容类型和版本等信息,这些信息可以帮助服务器理解客户端的需求,并返回合适的响应。 举个例子,如果你想发送一个带有 User-Agent 请求头的 HTTP 请求,你可以这样写: ```python import requests headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get('http://www.example.com', headers=headers) ``` 在这个例子中,我们使用了 headers 参数来携带一个 User-Agent 请求头,告诉服务器我们使用的是 Chrome 浏览器。 总之,使用 headers 参数携带 HTTP 请求头信息可以帮助你与服务器进行更有效的沟通,从而获得更好的响应。 ### 回答2: 在使用requests发送请求时,可以通过headers参数来自定义请求头。请求头是HTTP请求中的一部分,用于向服务器传递请求的附加信息。 headers参数的作用有以下几个方面: 1. 传递用户代理信息:可以设置User-Agent字段来模拟不同浏览器发送请求,例如headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}。 2. 设置Cookie信息:可以通过headers参数设置Cookie字段,例如headers = {'Cookie': 'key=value'},让服务器判断用户的身份。 3. 设置Referer信息:可以用来标识请求的来源,有些网站可能会验证Referer字段,所以可以通过headers参数设置Referer字段来绕过这种验证。 4. 设置请求方式及编码:通过headers参数可以设置请求的方式(GET或POST)和编码方式(例如'Content-Type': 'application/json')。 5. 隐藏爬虫身份:通过自定义请求头可以隐藏爬虫的身份,以防止被网站屏蔽或封禁。 总之,headers参数可以用来携带一些额外的请求信息,帮助我们更灵活地发送请求,并且在一些特定的场景下,比如模拟浏览器行为或隐藏爬虫身份等都起到了重要的作用。 ### 回答3: requests发送请求可以通过参数`headers`来携带请求头信息。`headers`参数的作用是在请求中添加头部信息,包括用户代理、cookies、接受的语言等等。 通过设置`headers`参数,可以模拟浏览器发送请求,使得服务器能够识别请求来源,并根据不同的头部信息返回对应的内容。比如,可以设置用户代理头部来模拟不同的浏览器,从而获得不同的网页显示效果。另外,通过设置`headers`参数来添加cookies信息,可以保持用户登录状态,实现持久化会话。 除了模拟浏览器发送请求以外,`headers`参数还可以用来伪装身份、传递其他自定义的头部信息。例如,可以设置`headers`中的`Referer`字段来告诉服务器请求的来源页面,或者通过设置`User-Agent`字段来设置用户代理信息,从而实现反爬虫策略。 总之,`headers`参数在requests发送请求时起到了重要的作用,它可以用来模拟浏览器行为、保持登录状态、传递其他自定义的请求头部信息等,使得请求更加灵活多样化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿维的博客日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值