精华内容
下载资源
问答
  • 上一节我们给大家介绍了Python爬虫库requests发送请求传参等使用方法,今天大家介绍下requests获取响应内容响应状态码、响应头等相关信息
  • 0、响应行、响应头、请求头所对应部分 1.1 设置(响应行)状态码 // 设置响应行状态码 402 response.setStatus(402); 1.2 设置错误提示信息 // 设置404错误返回信息为 找不到states路径 response.sendError(404...

    0、响应行、响应头、请求头所对应的部分

    在这里插入图片描述

    1.1 设置(响应行)状态码

    // 设置响应行状态码为 402
    response.setStatus(402);
    

    在这里插入图片描述

    1.2 设置错误提示信息

    // 设置404错误返回信息为 找不到states路径
    response.sendError(404,"找不到states路径");
    

    在这里插入图片描述

    2、设置响应头

    2.1 setHeader()
    只添加一个响应数据

    response.setHeader("sex":"0");
    
    response.setHeader("sex":"0");
    // 第二次设置会覆盖掉第一次设置的值
    response.setHeader("sex":"1");
    

    2.2 addHeader()
    添加多个响应数据

    response.addHeader("name":"hello");
    
    response.addHeader("name":"hello");
    // 第二次设置不会覆盖掉第一次设置的值
    response.addHeader("name":"hello2");
    

    在这里插入图片描述
    2.3 setContentLength()
    设置响应头长度

    // 设置响应头长度
    response.setContentLength(999);
    

    在这里插入图片描述

    展开全文
  • 当两者合并时,我得到一个状态代码200的响应,但是即使它被发送,客户端也不会显示元数据/正文内容.我唯一猜测是因为内容类型不包括在内,客户可能会对此感到挑剔.如何在响应中指定内容类型?(注意,客户端将一个字符...

    我有一个

    java echo httpserver了.

    它适用于测试站点,但我正在使用的客户端代码无法获取数据.

    当两者合并时,我得到一个状态代码为200的响应,但是即使它被发送,客户端也不会显示元数据/正文内容.

    我唯一的猜测是因为内容类型不包括在内,客户可能会对此感到挑剔.

    如何在响应中指定内容类型?

    (注意,客户端将一个字符串发送到服务器,并将POST作为参数以及一些标题信息.此代码目前设置为仅返回正文内容/参数.)

    任何想法赞赏!

    import static java.net.HttpURLConnection.HTTP_OK;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.OutputStream;

    import java.net.InetSocketAddress;

    import java.net.URLDecoder;

    import java.util.List;

    import com.sun.net.httpserver.Headers;

    import com.sun.net.httpserver.HttpExchange;

    import com.sun.net.httpserver.HttpHandler;

    import com.sun.net.httpserver.HttpServer;

    /**

    * Echo the body of an HTTP request back as the HTTP response. This is merely

    * a simple exercise of the Secret Sun Web Server. As configured, the URL to

    * access it is http://localhost:8000/echo.

    *

    * @author Andrew Cowie

    */

    public final class Test

    {

    public static void main(String[] args) throws IOException {

    final InetSocketAddress addr;

    final HttpServer server;

    addr = new InetSocketAddress(8000);

    server = HttpServer.create(addr, 10);

    server.createContext("/echo", new EchoHandler());

    server.start();

    }

    }

    class EchoHandler implements HttpHandler

    {

    public void handle(HttpExchange t) throws IOException {

    final InputStream is;

    final OutputStream os;

    StringBuilder buf;

    int b;

    final String request, response;

    buf = new StringBuilder();

    /*

    * Get the request body and decode it. Regardless of what you are

    * actually doing, it is apparently considered correct form to consume

    * all the bytes from the InputStream. If you don't, closing the

    * OutputStream will cause that to occur

    */

    is = t.getRequestBody();

    while ((b = is.read()) != -1) {

    buf.append((char) b);

    }

    is.close();

    if (buf.length() > 0) {

    request = URLDecoder.decode(buf.toString(), "UTF-8");

    } else {

    request = null;

    }

    /*

    * Construct our response:

    */

    buf = new StringBuilder();

    //buf.append("

    HTTP echo server");

    //buf.append("

    ");

    //buf.append(t.getRequestMethod() + " " + t.getRequestURI() + " " + t.getProtocol() + "\n");

    /*

    * Process the request headers. This is a bit involved due to the

    * complexity arising from the fact that headers can be repeated.

    */

    Headers headers = t.getRequestHeaders();

    for (String name : headers.keySet()) {

    List values = headers.get(name);

    for (String value : values) {

    //buf.append(name + ": " + value + "\n");

    }

    }

    /*

    * If there was an actual body to the request, add it:

    */

    if (request != null) {

    //buf.append("\n");

    buf.append(request);

    }

    //buf.append("

    ");

    //buf.append("\n");

    response = buf.toString();

    System.out.println(response);

    /*

    * And now send the response. We could have instead done this

    * dynamically, using 0 as the response size (forcing chunked

    * encoding) and writing the bytes of the response directly to the

    * OutputStream, but building the String first allows us to know the

    * exact length so we can send a response with a known size. Better :)

    */

    t.sendResponseHeaders(HTTP_OK, response.length());

    os = t.getResponseBody();

    os.write(response.getBytes());

    /*

    * And we're done!

    */

    os.close();

    t.close();

    }

    }

    展开全文
  • 当两者合并时,我得到一个状态代码200的响应,但是即使它被发送,客户端也不会显示元数据/正文内容.我唯一猜测是因为内容类型不包括在内,客户可能会对此感到挑剔.如何在响应中指定内容类型?(注意,客户端将一个字符...

    我有一个java echo httpserver了.

    它适用于测试站点,但我正在使用的客户端代码无法获取数据.

    当两者合并时,我得到一个状态代码为200的响应,但是即使它被发送,客户端也不会显示元数据/正文内容.

    我唯一的猜测是因为内容类型不包括在内,客户可能会对此感到挑剔.

    如何在响应中指定内容类型?

    (注意,客户端将一个字符串发送到服务器,并将POST作为参数以及一些标题信息.此代码目前设置为仅返回正文内容/参数.)

    任何想法赞赏!

    import static java.net.HttpURLConnection.HTTP_OK;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.OutputStream;

    import java.net.InetSocketAddress;

    import java.net.URLDecoder;

    import java.util.List;

    import com.sun.net.httpserver.Headers;

    import com.sun.net.httpserver.HttpExchange;

    import com.sun.net.httpserver.HttpHandler;

    import com.sun.net.httpserver.HttpServer;

    /**

    * Echo the body of an HTTP request back as the HTTP response. This is merely

    * a simple exercise of the Secret Sun Web Server. As configured, the URL to

    * access it is http://localhost:8000/echo.

    *

    * @author Andrew Cowie

    */

    public final class Test

    {

    public static void main(String[] args) throws IOException {

    final InetSocketAddress addr;

    final HttpServer server;

    addr = new InetSocketAddress(8000);

    server = HttpServer.create(addr, 10);

    server.createContext("/echo", new EchoHandler());

    server.start();

    }

    }

    class EchoHandler implements HttpHandler

    {

    public void handle(HttpExchange t) throws IOException {

    final InputStream is;

    final OutputStream os;

    StringBuilder buf;

    int b;

    final String request, response;

    buf = new StringBuilder();

    /*

    * Get the request body and decode it. Regardless of what you are

    * actually doing, it is apparently considered correct form to consume

    * all the bytes from the InputStream. If you don't, closing the

    * OutputStream will cause that to occur

    */

    is = t.getRequestBody();

    while ((b = is.read()) != -1) {

    buf.append((char) b);

    }

    is.close();

    if (buf.length() > 0) {

    request = URLDecoder.decode(buf.toString(), "UTF-8");

    } else {

    request = null;

    }

    /*

    * Construct our response:

    */

    buf = new StringBuilder();

    //buf.append("

    HTTP echo server");

    //buf.append("

    ");

    //buf.append(t.getRequestMethod() + " " + t.getRequestURI() + " " + t.getProtocol() + "\n");

    /*

    * Process the request headers. This is a bit involved due to the

    * complexity arising from the fact that headers can be repeated.

    */

    Headers headers = t.getRequestHeaders();

    for (String name : headers.keySet()) {

    List values = headers.get(name);

    for (String value : values) {

    //buf.append(name + ": " + value + "\n");

    }

    }

    /*

    * If there was an actual body to the request, add it:

    */

    if (request != null) {

    //buf.append("\n");

    buf.append(request);

    }

    //buf.append("

    ");

    //buf.append("\n");

    response = buf.toString();

    System.out.println(response);

    /*

    * And now send the response. We could have instead done this

    * dynamically, using 0 as the response size (forcing chunked

    * encoding) and writing the bytes of the response directly to the

    * OutputStream, but building the String first allows us to know the

    * exact length so we can send a response with a known size. Better :)

    */

    t.sendResponseHeaders(HTTP_OK, response.length());

    os = t.getResponseBody();

    os.write(response.getBytes());

    /*

    * And we're done!

    */

    os.close();

    t.close();

    }

    }

    解决方法:

    尝试添加

    t.getResponseHeaders().put("Content-Type", "text/html");

    在写之前

    标签:java,outputstream,server,httpserver

    来源: https://codeday.me/bug/20190628/1310509.html

    展开全文
  • 深入理解AJAX响应信息的处理

    千次阅读 2006-09-20 16:39:00
    用户的交互操作(interaction)驱动着Web站点。理解如何处理响应信息,特别是在使用新的交互操作形式(例如AJAX)的时候,这...如果引擎执行发送请求和接收响应信息的事务,那么它就有很多的处理响应信息的方法。响应信
    用户的交互操作(interaction)驱动着Web站点。理解如何处理响应信息,特别是在使用新的交互操作形式(例如AJAX)的时候,这一点非常重要的。Kris Hadloc解释了AJAX请求-响应过程的本质,你应该了解这些内容,更好地为用户交互操作服务。

      请求和响应

      AJAX引擎分很多个方面,每个方面都很重要。如果引擎执行发送请求和接收响应信息的事务,那么它就有很多的处理响应信息的方法。响应信息是处理过程中的一个重要的部分,这是因为用户最终会与响应信息交互操作。本文详细解释了如何处理AJAX响应信息,并为用户提供反馈信息,根据需要进行更新。我们从请求的就绪状态开始,接着解释响应信息的状态、回调(callback)和分析响应信息。本文还解释了响应信息的其它一些方面,例如加载消息、错误处理和显示响应信息。

      我建立了一个示例可供大家下载。这个示例包含了一个面向对象的AJAX引擎,你可以在任何AJAX应用程序中再次使用它。在讨论响应信息之前,我要指出如何建立AJAX引擎并发出请求。首先,让我们来看看AJAX引擎的代码(没有带上响应信息处理部分):

    document.write("<script type=/"text/javascript/" src=/"js/HTTP.js/"></script>");
    function Ajax()
    {
     this.toString = function() { return "Ajax"; }
     this.http = new HTTP();
     this.makeRequest = function(_method, _url, _callbackMethod)
     {
      this.request = (window.XMLHttpRequest)? new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP");
      this.request.onreadystatechange = _callbackMethod;
      this.request.open(_method, _url, true);
      this.request.send(_url);
     }
    }

      为了建立这个对象并发出请求,你只需要使用下面两行代码:

    var ajax = new Ajax();
    ajax.makeRequest('GET', 'xml/content.xml', onResponse);

      上面的第二行代码反映了你选择的请求方法、XML的路径或请求的服务器端脚本、当接收到响应信息时你希望调用的回调方法。现在你对AJAX引擎和如何发出请求已经有了一定的了解,我们来看看如何处理请求。

      就绪(Ready)状态

      就绪状态由回调方法来处理,当我们做出请求的时候,回调方法就已经设置好了。在例子中,onResponse被设置为回调方法,它在本文中被用于处理所有的分析代码的操作。我们将使用下面的代码来检测回调方法中的AJAX对象的就绪状态:

    function onResponse()
    {
     if(ajax.checkReadyState('body', 'loading...', 'loading...', 'loading...') == "OK")
     {
      // 此处是分析代码
     }
    }

      上面的代码显示,我们将向checkReadyState方法传递四个参数。第一个参数是我们希望显示的加载(loading)消息div的ID、其它三个参数都是自定义的对应于不同状态的加载消息。我选择的用于加载消息的div的名字是body,它使得新数据在被载入的时候,内容和加载消息是合并在一起的。下面是实际的checkReadyState方法,它处理了我们刚才讨论的代码,并在div中向我们传递进去的参数来显示它。这个方法也被包含在示例AJAX引擎中了。

    this.checkReadyState = function(_id, _1, _2, _3)
    {
     switch(this.request.readyState)
     {
      case 1:
       document.getElementById(_id).innerHTML = _1;
       break;
      case 2:
       document.getElementById(_id).innerHTML = _2;
       break;
      case 3:
       document.getElementById(_id).innerHTML = _3;
       break;
      case 4:
       document.getElementById(_id).innerHTML = "";
       return this.http.status(this.request.status);
     }
    }

      checkReadyState方法为用户提供页面状态的反馈信息是有用处的。下表显示了它检测的值:

    状态
    0 Uninitialized(未初始化)
    1 Loading(正在载入)
    2 Loaded(已经载入)
    3 Interactive(交互)
    4 Complete(完成)

      你可以为每种加载状态添加一个自定义的消息--它可以是一个简单的字符串,也可以是字符串格式的图片标签(例如显示一个动画的加载GIF)。下面就是一个例子:

    var loader = "<img src='images/loader.gif'>";
    ajax.checkReadyState('body', loader, loader, loader);

      不仅checkReadyState方法处理请求状态,它所包含的HTTP对象也会检测和返回请求的状态。

    共2页。 1 2 8  
    展开全文
  • * 报错信息 Symfony\Component\Debug\Exception\FatalThrowableError: Cannot use object of type GuzzleHttp\Psr7\Str Cannot use object of type GuzzleHttp\\Psr7\\Stream as array Guzzle...
  • 实验吧的一道web题:抓住关键字:快!...看到了base64编码的flag,作为了响应的内容了。注释让我们用post方法传一个名key的参数到服务端。倘若我们这时候从响应中解码再传过去,肯定是的不到flag的,因为...
  • HTTP Server在响应请求时,会返回服务器Server信息,比如 Tomcat 7 Header是: 这东西其实会给一些别有用心之人带来一定提示作用;安全起见,我们一般会建议去掉或修改这个信息。在 Tomcat server.xml ...
  • Java Servlets如此有用原因之一是Servlet能动态显示网页内容。这些内容可以从服务器本身、另外一个网站、或者许多其他网络可以访问资源里获取。Servlet不是静态网页,它们是动态。可以说这是它们最大优势。 ...
  • 它提供了一种新颖的方式来呈现干净,直观和适应性强的内容。 Noodel当前可作为Noodel.js获得,Noodel.js是用于Web项目的开源JavaScript库。 Noodel吃自己的狗食:它使用自己来展示自己的文档;) 有关您需要了解的...
  • 响应式联系信息

    2020-03-18 15:52:56
    响应式联系信息 ...两个视频的内容相同,第二个转载 效果图 代码区 html <div class="contact-info"> <div class="card"> <i class="card-icon far fa-envelope"></i> ...
  • 在模拟器环境下没有问题,但是用真机访问时出现“客户端响应内容的类型 text/vnd.wap.xml; 但应该是text/xml”错误信息。这个问题怎么解决呢? 另外,昨天我在手机上使用时还正常,但是今天使用时候就出现...
  • 关于 客户端发现响应内容类型“text/html; charset=utf-8”,但应“text/xml”解决方法 请求web服务时,会有如题异常出现,解决方法如下: 1 检查web服务是否正常,如果web服务有异常,那么Web服务...
  • 有关此文档的内容及其存在的原因,请参阅以获取更多信息。 您可以在此存储库中查看文档,也可以在上将其呈现网站。 发展历程 我们使用从该存储库创建一个静态站点。 为了当地发展, 安装MkDocs pip install ...
  • 上一篇文章中我们已经成功的记录了Request部分的信息,现在我们来看下如何记录Response的内容。 相比于Request,Response额外多了个StatusCode,然后内容都是通过Body读取,不过不同于Request.Body的只读,Response....
  • SpringMVC的@ResponseBody返回中文乱码的原因是Controller层编程时使用的编码...我们可以在配置文件中的mvc:annotation-driven中配置一个专门处理返回内容是文本信息的MessageConverter。此方法是全局的、针对整个项...
  • Action() { int nHttpRetCode; // 默认最大长度256,get请求需注意缓存问题,... //自定义截取字符串,根据左右字符串获取数据,设置查找范围消息体、左右查找边界空则可以获取整个响应的内容 web_reg...
  • 本文转载自:...本文编写时候使用 Spring Cloud Gateway 版本当时最新版本 Greenwich.SR1 。 我们在使用 Spring Cloud Gateway 时候,注意到过滤器(包括 GatewayFilter ...
  • asp.net调用Java开发wsdl接口出现客户端发现响应内容类型“multipart/related; 应text/xml有人知道怎解决这个办法吗?求高手指教!在soapui上测试是正常,如下请求头部信息POST ...
  • 解析Ajax如何处理响应信息用户的交互操作(interaction)驱动着Web站点。理解如何处理响应信息,特别是在使用新的交互操作形式(例如AJAX)的时候,这一点非常重要的。...如果引擎执行发送请求和接收响应信息的事务,那么它
  • 客户端发现响应内容类型“application/json;charset=UTF-8”,但应“text/xml”。请求失败,错误信息为:--{"code" : "03010250002","msg" : "Illegal json string","data" : ""}--. 说明:执行当前 Web 请求...
  • 在jmeter 发送请求过程中,有时候...需要使用jmeter 把响应内容转换成中文显示,方便查看。思路是使用beanshell 把unicode响应结果转换成中文,步骤: 1.选择某个请求接口右键点击,添加后置处理器,BeanShell Po...
  • Action() { int nHttpRetCode; // 默认最大长度256,get请求需注意缓存问题,需要... //自定义截取字符串,根据左右字符串获取数据,设置查找范围消息体、左右查找边界空则可以获取整个响应的内容 web_...
  • Python_Flask中的响应

    2018-11-06 20:31:36
    Python_Flask中的响应 1. 响应对象 视图函数返回的 str / bytes 类型数据会被包装 Response 响应对象... # 创建自定义响应对象 将想要在网页上显示的内容设置参数即可 response = make_response("hello fl...
  • 如今,网站已成为商业成功的关键。...您的网站在平板电脑,笔记本或台式机上呈现的内容和实现的功能,响应式设计能够确保这些内容和功能,在移动设备上也都能实现。网站在不同的平台,屏幕间切换自如给用
  • bootstrap的响应式布局

    2020-05-04 01:13:43
    响应式布局是bootstrap一种布局方式,常用于企业官网、博客、新闻资讯类型网站,这些网站以浏览内容为主,没有复杂交互。,主要依赖jquery,所以使用时先装上jquery 可参考网站:...
  • 在jmeter 发送请求过程中,有时候后台返回是unicode 代码,如: {"status":-1,"msg":"\u63d0\u4ea4\u6570\u636e\u4e0d\u8...需要使用jmeter 把响应内容转换成中文显示,方便查看。思路是使用bean shell 把unicod...
  • 1.首先确认该接口是否添加http cookie管理器,如没有则添加,如果该接口不需要cookie则该内容为空。 2.再检查http信息头管理器是否正确,都是小写。 3.再检查接口请求参数数据类型是否正确,注意form-data...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,502
精华内容 1,000
关键字:

响应信息的内容为