错误的请求和超时

嗨,即时通

我想使用套接字访问任意网页(作为我自己的学习机制)。下面的代码不起作用,我在做什么错?

import java.net.*;
import java.io.*;

public class Example
{
     public static void main(String args[]) throws Exception
     {
          Socket socket =
               new Socket("www.google.com", 80);
          PrintWriter out =
               new PrintWriter(socket.getOutputStream(), true);
          BufferedReader reader =
               new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));

          BufferedReader stdIn =
               new BufferedReader(
                    new InputStreamReader(System.in));

          String userInput;
          while ((userInput = stdIn.readLine()) != null) {
               out.println("GET / HTTP/1.1 \\r\\n Host: www.google.com \\r\\n\\r\\n");
               System.out.println("echo: " + reader.readLine());
         }
     }
}

经过几个小时的尝试,我无法弄清楚自己到底在做什么错。我想要的只是Google或其他网站的主页。谁能帮我?

第三代

您可以尝试以下操作(使用套接字)

package com.example.webpagesocket;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;

public class GetWebPageUsingSockets {

    public static void main(String[] args) {
        String urlString;

        urlString = "www.google.com";

        accessWeb(urlString);
    }

    private static void accessWeb(String urlString) {
        String host;
        String page;
        int slashLoc;

        // Set up encoding and decoding
        Charset charset = Charset.forName("ISO-8859-1");
        CharsetDecoder decoder = charset.newDecoder();
        CharsetEncoder encoder = charset.newEncoder();

        if ((slashLoc = urlString.indexOf('/')) < 0) {
            host = urlString;
            page = "";
        } else {
            host = urlString.substring(0, slashLoc);
            page = urlString.substring(slashLoc);
        }

        System.out.println("Accessing web page demonstration");
        System.out.println("Host: '" + host + "' Page: '" + page + "'");

        SocketChannel channel = null;

        try {
            ByteBuffer buffer = ByteBuffer.allocateDirect(1024);
            CharBuffer charBuffer = CharBuffer.allocate(1024);

            InetSocketAddress socketAddress = new InetSocketAddress(host, 80);
            channel = SocketChannel.open();
            channel.connect(socketAddress);

            String request = "GET " + page + " \r\n\r\n";
            channel.write(encoder.encode(CharBuffer.wrap(request)));

            while ((channel.read(buffer)) != -1) {
                buffer.flip();
                decoder.decode(buffer, charBuffer, false);
                charBuffer.flip();
                System.out.println(charBuffer);
                buffer.clear();
                charBuffer.clear();
            }
        } catch (UnknownHostException e) {
            System.err.println(e);
        } catch (IOException e) {
            System.err.println(e);
        } finally {
            if (channel != null) {
                try {
                    channel.close();
                } catch (IOException ignored) {
                }
            }
        }

        System.out.println("\nDone.");
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS $超时返回错误的请求

来自分类Dev

节点服务器,套接字,请求和响应超时

来自分类Dev

请求和响应处理之间的HTTP断开连接/超时

来自分类Dev

NodeJS请求和错误处理

来自分类Dev

请求超时,错误早于超过最大超时时间

来自分类Dev

超时错误:Pandas 中的 JSON 请求

来自分类Dev

Python在发送请求时收到超时错误

来自分类Dev

网络钩子调用失败。错误:请求超时

来自分类Dev

区分已取消的请求和使用$ http真正错误的请求

来自分类Dev

无法执行请求。CFNetwork错误:请求超时

来自分类Dev

错误:错误域= NSURLErrorDomain代码= -1001“请求超时。”

来自分类Dev

Passport.authenticate()问题,错误的请求和其他问题

来自分类Dev

使用Python请求和错误代码解析JSON数组

来自分类Dev

Node JS 请求和cheerio HTML 页面错误

来自分类Dev

使用 dask 发送并行 API 请求和错误处理

来自分类Dev

发出http GET请求时出现超时错误

来自分类Dev

Webhook呼叫失败。错误:DEADLINE_EXCEEDED | 请求超时

来自分类Dev

请求给出错误“由于超时而关闭连接”

来自分类Dev

JMeter中的JMS点对点请求超时不会导致错误

来自分类Dev

SQL Server 2012错误-超出了锁定请求超时

来自分类Dev

整个请求的请求超时?

来自分类Dev

Spring MVC:发布请求和带有数组的json对象:错误请求

来自分类Dev

端点开始运行云-请求超时或请求太大错误

来自分类Dev

关于http请求和请求

来自分类Dev

Symfony2是对请求(主请求和子请求)的印象是否错误,还是我弄错了

来自分类Dev

更改解析请求的超时

来自分类Dev

请求超时NSURLSession

来自分类Dev

LBAPI请求的超时增加

来自分类Dev

Web Api请求超时?

Related 相关文章

热门标签

归档