`
solidsnake2007
  • 浏览: 29699 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Socket实现访问HTTP服务并且获得返回值

 
阅读更多
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

        request.setCharacterEncoding("utf-8");
        response.setContentType("application/x-javascript;charset=utf-8");
        InterventionVO target = dao.findById(200001001L);
        PrintWriter writer = response.getWriter();
        //"application/x-javascript"
        writer.append("'name':'张3'");

        System.out.println(JSON.toJSON(target));
        writer.flush();
        writer.close();


    }

    以上是服务端代码 (URL 为 interventionService/testJson.service)

  

    客户端需要链接时可以这样使用Socket访问这个URL并获得这个链接

 

 public static void main2(String[] args) throws IOException {
        Socket s = new Socket("192.168.0.198", 8080);

        OutputStream outputStream = s.getOutputStream();
        PrintWriter p = new PrintWriter(outputStream);
        p.write("GET /interventionService/testJson.service HTTP/1.1\n" +
                "Host: localhost:8080\n" +
                "Connection: keep-alive\n" +
                "User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5\n" +
                "Accept: text/html,application/xhtml+xml,application/xml,application/x-javascript;q=0.9,*/*;q=0.8\n" +
                "Accept-Encoding: gzip,deflate,sdch\n" +
                "Accept-Language: zh-CN,zh;q=0.8\n" +
                "Accept-Charset: UTF-8,*;q=0.5\n" +
                "\r\n\r\n\r\n");
        p.flush();
        InputStream inputStream = s.getInputStream();
        String str = readInputStream(Charset.forName("UTF-8"), inputStream);
        System.out.println(str);
        s.close();
    }
    这样就可以了,需要有三点注意的

 

    1. readInputStream就是读取数据的函数自行编写即可.

    2. 如果需要带Cookie 可以在write里多加一句"Cookie:xxxxxx“。(提示一下,可以做跨域免登录)

    3. 在writer的末尾端必须有3行换行且必须是\r\n (HTTP协议如此规定).

    别忘了在write之后flush。

 

分享到:
评论

相关推荐

    UDP 测试通讯

    1. **初始化Winsock**:在使用任何Winsock函数之前,需要调用`WSAStartup`函数,指定版本信息,并获得Winsock服务提供者的句柄。 2. **创建Socket**:使用`socket`函数创建一个UDP套接字。参数指定为`AF_INET`表示...

    FAQ-Socket.txt

    例如,如果书名为[booktitle],则可以尝试访问该书的官方网站或者联系作者获取相关信息。 #### 1.6 如何获取更多关于套接字编程的信息? 除了本FAQ外,还可以通过以下途径获取更多关于套接字编程的知识: - 阅读...

    《JAVA程序设计》期末考试试题-(七).doc

    - Java线程的优先级范围是1到10,其中1是最低优先级,10是最高优先级,优先级高的线程更可能获得CPU执行时间。 4. **构造方法**: - 构造方法是用于初始化新创建对象的特殊方法,它的名称与所在类的名称完全相同...

    Java知识点,面试考点

    - Socket编程:TCP和UDP通信的基本概念和实现。 - URL与URLConnection:网络资源的访问与下载。 10. **Java 8及更新特性**: - Lambda表达式:简化匿名内部类,函数式编程的基础。 - Stream API:用于集合操作...

    c# 加密和解密相关代码

    ToChar 方法返回指定的Unicode字符值,并且不执行任何实际的转换,其语法格式如下: public static char ToChar (char value) 参数说明 value:一个Unicode 字符。 设 计过程 (1)打开Visual Studio 2008 开发环境...

    详细的java基础总结

    在Java中,封装通常是通过将类的成员变量设置为私有(private),并通过公共(public)的方法来访问这些变量实现的。 #### 第四章:面向对象下 - **继承** 继承是面向对象编程的另一个重要特性,允许创建一个新的...

    J2EE武功秘籍

    - **Callable**:与 `Runnable` 类似,但支持返回值,并且可以通过 `Future` 获取结果。 **6. Socket 和 ServerSocket 区别** - **Socket**:用于客户端和服务端之间的双向通信。 - **ServerSocket**:服务端监听...

    java经典面试2010集锦100题(不看你后悔)

    C) 类实现了接口,必须实现接口中的所有方法,并且接口中的所有方法均为public,在实现类中不可以削弱接口中方法的访问权限。 D) 类实现了接口,实现接口中的方法时可以重写该方法的访问权限,但是无法改变接口中...

    CoreJava学习笔记

    构造方法的名字必须与类名相同,并且没有返回值类型。 **数据和方法的隐藏——封装:** 封装是面向对象编程中的一个重要概念,它指的是将数据和操作这些数据的方法包装在一个单一的单位中,并对外界隐藏具体的实现...

    Adobe flex3.pdf

    - **网络通信**:ActionScript 3.0 支持多种网络通信方式,包括HTTP请求、XMLHttpRequests和Socket连接,这对于构建动态Web应用程序非常有用。 - **调试和优化**:为了确保应用程序的质量和性能,学习如何使用调试...

    JAVA期末复习题27.doc

    - 构造函数没有返回类型,即使是无返回值的也写作无类型,而不是`void`。 - 构造函数名称必须与类名相同,并且用于初始化对象的状态。 ### 7. 方法返回类型 **题目**: 以下方法的返回类型是什么? ```java ...

    Unix编程常见问题解答

    父子进程之间的通信可以通过管道(pipe)、套接字(socket)或共享内存等方式实现。管道是最常见的IPC(Inter-Process Communication)机制之一,允许父子进程之间进行单向的数据传递。套接字则提供了一种网络化的...

    基于SIP开发软件电话的一些资源(转自YOUTOO)

    由于oSIP是比较底层的SIP协议栈实现,新手较难上手,而官方的示例大都是一些伪代码,需要有实际的例子程序参考学习,而最好的例子就是同样官方发布的oSIP的扩展开发库exosip2,使用exoSIP可以很...

    ruby初学者教程(对初学者很有帮助)

    对象可以访问类定义的方法,并且可以通过实例变量存储数据。 ```ruby person = Person.new("Alice", 30) person.speak # 输出 "Hello, my name is Alice." ``` **3.3 继承** Ruby支持单一继承,子类可以继承父类...

    Python项目:Python语言示例

    列表是Python中最常用的数据结构之一,它允许存储任意数量的元素,并且可以容纳不同类型的数据。你可以通过索引访问列表元素,也可以进行切片、追加、插入和删除等操作。元组与列表类似,但一旦创建就不可变。字典则...

    觅职渣记-互联网技术类笔试面试总结

    常见的调度算法包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)、优先级调度等。 **5. 多进程与多线程的区别** - **多进程**:每个进程都有独立的地址空间,进程间通信相对复杂。 - **多线程**:...

    易语言程序免安装版下载

     静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中的支持库,该支持库中的数据或资源将不能再被其它EXE/DLL中所使用的同名支持库访问。这是因为代码被分别...

    新版Android开发教程.rar

    � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、制造商、独立软件生产商都可以获得不错的利 益 。 将移动终端的评价标准从硬件向软件转变,极大的激发了软件开发者的热情。 � Android 的源代码遵循 Apache...

Global site tag (gtag.js) - Google Analytics