使用套接字的HTTP请求

Java Panter

我必须使用HTTP请求向嵌入了HTTP服务器的某些应用程序发送一些命令。我使用的是套接字,到目前为止,我已经这样做了,但是我有点迷路了:

 URI uri = URI.create(rawData);
    try {

        String host = uri.getHost();
        String path = uri.getRawPath( );
        if (path == null || path.length( ) == 0) {
            path = "/";
        }
        String protocol = uri.getScheme( );
        int port = uri.getPort( );
        if (port == -1) {
            if (protocol.equals("http")) {
                port = 80; // http port
            }
            else if (protocol.equals("https")) {
                port = 443; // https port
            }
        }
        Socket socket = new Socket( host, port );
        PrintWriter request = new PrintWriter( socket.getOutputStream() );
        request.print(  "GET " + path + " HTTP/1.1\r\n" +
                   "Host: " + host + "\r\n" +
                   "Connection: close\r\n\r\n");
        request.flush( );

这就是我需要做的吗?rawData的示例是"http://somemessage"。协议是否正确编写?谢谢

斯蒂芬·C

这就是我需要做的吗?

不。

  1. 您需要处理响应,处理可能会收到的各种响应非常复杂。

  2. 您处理HTTPS的方式是完全错误的。您需要处理SSL连接协商...,如果尝试使用普通套接字进行此操作,则需要进行大量的编码。

rawData的示例是 "http://somemessage"

什么是奇怪的网址。“ //”后面的内容应为(或包括)可解析的主机名或IP地址。如果您尝试使用网络浏览器获取类似的URL,它将无法正常工作。

协议编写正确吗?

当然,URL书写不正确。如果您尝试将所谓的URL与HttpURLConnection或任何其他客户端HTTP API(请参见下文)一起使用,则将无法正常工作

典型的格式正确的URL(在这种情况下,具有明确的端口号)如下所示:

    http://example.com:8080/path/to/resource

您也可以用相对形式来表示URI。例如

    http:/path/to/resource

要么

    http:relpath/to/resource

甚至

    resource

但是必须先将这两种形式转换为绝对(URL)形式,然后才能由客户端库使用。


但是坦率地说,这是错误的处理方式。Java SE库以及Apache HTTP库中都有客户端HTTP / HTTPS堆栈的现有实现。尝试重新实现它们是浪费时间。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中使用套接字的HTTP请求

来自分类Dev

使用null检查Java从套接字读取HTTP请求

来自分类Dev

如何使用Java套接字HTTP / 1.1请求下载图像?

来自分类Dev

在HashLink上使用套接字读取HTTP请求

来自分类Dev

python套接字如何使用相同的套接字连接正确重定向http / s请求?

来自分类Dev

套接字HTTP请求返回无效的GZIP

来自分类Dev

HTTP不套接字Web请求-D

来自分类Dev

套接字还是HTTP POST请求?

来自分类Dev

从Android使用HTTP或套接字

来自分类Dev

使用原始套接字的ping请求失败

来自分类Dev

使用Node HTTP请求从GitHub API进行套接字挂断错误

来自分类Dev

使用iojs创建http请求时,如何捕获EHOSTDOWN套接字错误?

来自分类Dev

使用iojs创建http请求时,如何捕获EHOSTDOWN套接字错误?

来自分类Dev

如何在Java中使用相同的套接字连接执行多个HTTP请求?

来自分类Dev

使用套接字的C ++ HTTP GET

来自分类Dev

使用套接字通过HTTP发送结构

来自分类Dev

Java、HTTP 和套接字:何时停止读取请求但保持套接字打开?

来自分类Dev

无法通过Perl套接字发送管道HTTP请求

来自分类Dev

套接字挂断错误与多个http.get请求

来自分类Dev

Java套接字收到HTTP / 1.1 400错误请求

来自分类Dev

如何在Java中使用套接字打印/获取传入的HTTP POST请求的有效负载(带有套接字)

来自分类Dev

使用sails.js访问套接字请求上的会话

来自分类Dev

使用套接字从服务器请求文件

来自分类Dev

使用一个TCP套接字的多个请求

来自分类Dev

使用套接字从服务器请求文件

来自分类Dev

如何使用多线程从套接字读取请求

来自分类Dev

错误的请求套接字python

来自分类Dev

使用套接字的IllegalBlockingModeException

来自分类Dev

接收套接字请求,通过各个端点,并使用骆驼中的netty响应回相同的套接字连接

Related 相关文章

  1. 1

    在C中使用套接字的HTTP请求

  2. 2

    使用null检查Java从套接字读取HTTP请求

  3. 3

    如何使用Java套接字HTTP / 1.1请求下载图像?

  4. 4

    在HashLink上使用套接字读取HTTP请求

  5. 5

    python套接字如何使用相同的套接字连接正确重定向http / s请求?

  6. 6

    套接字HTTP请求返回无效的GZIP

  7. 7

    HTTP不套接字Web请求-D

  8. 8

    套接字还是HTTP POST请求?

  9. 9

    从Android使用HTTP或套接字

  10. 10

    使用原始套接字的ping请求失败

  11. 11

    使用Node HTTP请求从GitHub API进行套接字挂断错误

  12. 12

    使用iojs创建http请求时,如何捕获EHOSTDOWN套接字错误?

  13. 13

    使用iojs创建http请求时,如何捕获EHOSTDOWN套接字错误?

  14. 14

    如何在Java中使用相同的套接字连接执行多个HTTP请求?

  15. 15

    使用套接字的C ++ HTTP GET

  16. 16

    使用套接字通过HTTP发送结构

  17. 17

    Java、HTTP 和套接字:何时停止读取请求但保持套接字打开?

  18. 18

    无法通过Perl套接字发送管道HTTP请求

  19. 19

    套接字挂断错误与多个http.get请求

  20. 20

    Java套接字收到HTTP / 1.1 400错误请求

  21. 21

    如何在Java中使用套接字打印/获取传入的HTTP POST请求的有效负载(带有套接字)

  22. 22

    使用sails.js访问套接字请求上的会话

  23. 23

    使用套接字从服务器请求文件

  24. 24

    使用一个TCP套接字的多个请求

  25. 25

    使用套接字从服务器请求文件

  26. 26

    如何使用多线程从套接字读取请求

  27. 27

    错误的请求套接字python

  28. 28

    使用套接字的IllegalBlockingModeException

  29. 29

    接收套接字请求,通过各个端点,并使用骆驼中的netty响应回相同的套接字连接

热门标签

归档