java 模拟telnet 发动http 请求

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/eiffel_0311/article/details/100016477

1. telnet 方式:

1.1 telnet map.baidu.com

1.2 输入:Alt + ]

1.3 输入:GET /?qt=ipLocation HTTP/1.1

1.4 输入:HOST:map.baidu.com

1.5 输入:Cookie:BAIDUID=AAAA

两次回车

 

2. java

        Socket s = new Socket("map.baidu.com",80);
        PrintWriter out=new PrintWriter(s.getOutputStream(),true);

        out.println("GET /?qt=ipLocation HTTP/1.1");
        out.println("HOST:map.baidu.com");
        out.println("Cookie:BAIDUID=AAAA");
        out.println();
        out.println();

        BufferedReader bufr=new BufferedReader(new 
        InputStreamReader(s.getInputStream()));

        String line=null;
        while((line=bufr.readLine())!=null)
            System.out.println(line);
        s.close();

当然可以调用现成的好多的java类,并且参数更丰富...,这样写个人感觉很干净

 

展开阅读全文

C#模拟HTTP请求

12-06

我现在接到一个比较棘手的项目,需求是他们手上有很多B/S查询平台,这些查询平台都可以根据同一个字段查询出信息,现在他们想要我做成输入一个字段能查询出所有平台的信息,这些平台的数据库和服务器都无法获取,所以通过正常的写程序思路是无法实现的,但是这个客户是权力很大的机关,无法拒绝,所以我用C#HTTPrequest 方法来实现。Get方式访问没多大问题。但是POST方式就无法获取到服务器端发送回来的HTML。rn例:我向登录界面发送我的登录信息,按逻辑上推理,服务器应该发送回来登录成功的信息,但是服务器发送回来的HTML还是登录界面。rn以下是我使用的代码:rn[code=C#]rn /// rn /// 向服务器发送请求rn /// rn /// 目标网页地址rn /// 提交过去的数据没有则可以传空值rn /// 如果使用Session则输入Session内容,没有可以是任何值rn /// 返回HTML标签语言rn private string GetResponse(string url, string parameter, string SessionInfo=null)rn rn WebClient client = new WebClient();rn string returnvalue = string.Empty;rn tryrn rn HttpWebRequest Hrequest = (HttpWebRequest)HttpWebRequest.Create(url);rn Hrequest.ContentType = "application/x-www-form-urlencoded";rn //Hrequest.Referer = "";rn Hrequest.Timeout = 600000;rn Hrequest.Method = "POST";rn //获取登录用户的Session rn Hrequest.Headers.Add("Cookie", SessionInfo);rn Hrequest.KeepAlive = true;rn Hrequest.AllowAutoRedirect = true;rn if (parameter != null)rn rn using ( Stream reqStream = Hrequest.GetRequestStream())rn rn reqStream.Write(Encoding.GetEncoding("GB2312").GetBytes(parameter), 0,Encoding.GetEncoding("GB2312").GetBytes(parameter).Length);rn rn rn HttpWebResponse Hresponse = (HttpWebResponse)Hrequest.GetResponse();rn using (Stream respStream = Hresponse.GetResponseStream())rn rn //GetEncoding("GB2312")rn StreamReader reader = new StreamReader(respStream, Encoding.UTF8);rn returnvalue = reader.ReadToEnd();rn rn rn catch (Exception exception)rn rn MessageBox.Show(exception.Message);rn rn return returnvalue;rn rnrn[/code]rn这个代码可能POST没有成功,或者是服务器没有识别我传的参数。最后服务器返回过来的HTML是提交数据前的HTML。rnrn 论坛

没有更多推荐了,返回首页