标签: httpresponse

使用Selenium检查HTTP响应头的最佳方法

我需要使用Selenium检查HTTP响应头的最佳方法.我环顾了Selenium文档并没有看到任何简单的方法.非常感谢帮助.

selenium http httpresponse http-headers

14
推荐指数
2
解决办法
3万
查看次数

获取Content-Disposition参数

如何获取使用WebClient从WebAPI控制器返回的Content-Disposition参数?

WebApi控制器

    [Route("api/mycontroller/GetFile/{fileId}")]
    public HttpResponseMessage GetFile(int fileId)
    {
        try
        {
                var file = GetSomeFile(fileId)

                HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
                response.Content = new StreamContent(new MemoryStream(file));
                response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
                response.Content.Headers.ContentDisposition.FileName = file.FileOriginalName;

                /********* Parameter *************/
                response.Content.Headers.ContentDisposition.Parameters.Add(new NameValueHeaderValue("MyParameter", "MyValue"));

                return response;

        }
        catch(Exception ex)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
        }

    }
Run Code Online (Sandbox Code Playgroud)

客户

    void DownloadFile()
    {
        WebClient wc = new WebClient();
        wc.DownloadDataCompleted += wc_DownloadDataCompleted;
        wc.DownloadDataAsync(new Uri("api/mycontroller/GetFile/18"));
    }

    void wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
    {
        WebClient wc=sender as WebClient;

        // Try to extract the filename from …
Run Code Online (Sandbox Code Playgroud)

c# webclient httpresponse content-disposition asp.net-web-api2

14
推荐指数
3
解决办法
2万
查看次数

Logcat在每个DefaultHttpClient执行方法调用期间打印"interface name:null"

我多次联系Web服务以通过HttpGet和获取JSON字符串DefaultHttpClient.

...
DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = (HttpResponse)defaultHttpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
...
Run Code Online (Sandbox Code Playgroud)

我发现LogCat是打印接口名称:null,每次都执行标签System.outHttpResponse httpResponse = (HttpResponse)defaultHttpClient.execute(httpGet);.

我正确地建立这个http连接HttpGet吗?有不同的方式吗?

如何创建此连接而不是获取接口名称:来自System.out标记的null LogCat消息?

android http-get httpresponse httpclient logcat

13
推荐指数
1
解决办法
602
查看次数

在Play中返回RESTful响应代码

我刚刚开始使用REST,我一直在阅读这篇文章和上面提到的关于REST 响应代码的.但是,当我查看Play的Controller类时,它似乎仅限于返回

  • 200 - 好的
  • 301 - 永久移动
  • 302 - 发现
  • 304 - 未修改
  • 400 - 错误请求
  • 401 - 未授权
  • 403 - 禁止
  • 404 - 未找到
  • 5XX

这似乎遗漏了一些可能有用的代码:

  • 201 - 创建(成功JSON帖子的良好响应?)
  • 202 - 已接受(对于排队请求)
  • 204 - 无内容(成功PUT/POST/DELETE的可能响应)
  • 307 - 临时重定向
  • 405 - 不允许的方法
  • 406 - 不可接受
  • 409 - 冲突
  • 410 - 走了
  • 415 - 不支持的媒体类型(当没有定义JSON模板时,这似乎是对JSON格式请求的适当响应)

毕竟不需要那些吗?Play会自动处理这些情况吗?

此外,似乎一个控制器无法很好地处理相同资源的REST请求和正常网页请求,因为始终返回网页200.我错过了什么吗?

rest httpresponse playframework

13
推荐指数
2
解决办法
8311
查看次数

13
推荐指数
1
解决办法
7331
查看次数

Response.Write和UpdatePanel

我使用以下代码片段生成一个我发送给客户端的vcard:

Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", fileNameOnly));
Response.ContentType = "text/x-vcard";
Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1");
Response.Write(vCard.ToString());
Response.End();
Run Code Online (Sandbox Code Playgroud)

但是,我需要在内部具有控件和UpdatePanel的页面上使用vCards.不幸的是,根据更新面板和响应写入, 这不起作用并导致错误.我想知道什么是将vcard /文件的内容发送到客户端浏览器的其他方法,并让它显示"打开/保存"对话框,不涉及Response.Write?

asp.net updatepanel response.write httpresponse

13
推荐指数
1
解决办法
2万
查看次数

节点流导致大量内存占用或泄漏

我正在使用节点v0.12.7并希望直接从数据库流到客户端(用于文件下载).但是,在使用流时,我注意到大量内存占用(以及可能的内存泄漏).

使用express,我创建了一个端点,只需将可读流管道到响应中,如下所示:

app.post('/query/stream', function(req, res) {

  res.setHeader('Content-Type', 'application/octet-stream');
  res.setHeader('Content-Disposition', 'attachment; filename="blah.txt"');

  //...retrieve stream from somewhere...
  // stream is a readable stream in object mode

  stream
    .pipe(json_to_csv_transform_stream) // I've removed this and see the same behavior
    .pipe(res);
});
Run Code Online (Sandbox Code Playgroud)

在生产中,可stream读取数据库中的数据.数据量非常大(1M +行).我用虚拟流交换了这个可读流(参见下面的代码)以简化调试并注意到相同的行为:我的内存使用量每次都会跳跃大约200M.有时垃圾收集会启动并且内存会下降一点,但它会线性上升,直到我的服务器内存不足.

我开始使用流的原因是不必将大量数据加载到内存中.这种行为有望吗?

我还注意到,在流式传输时,我的CPU使用率跳跃到100%并阻塞(这意味着其他请求无法处理).

我错误地使用了这个吗?

虚拟可读流代码

// Setup a custom readable
var Readable = require('stream').Readable;

function Counter(opt) {
  Readable.call(this, opt);
  this._max = 1000000; // Maximum number of records to generate
  this._index = 1;
}
require('util').inherits(Counter, Readable);

// Override internal …
Run Code Online (Sandbox Code Playgroud)

javascript memory-leaks stream httpresponse node.js

13
推荐指数
2
解决办法
4000
查看次数

哪些HTTP错误永远不会触发自动重试?

我正在尝试使一些微服务更具弹性,并且重试某些类型的HTTP请求将有助于此.

重试超时会给客户带来非常缓慢的体验,因此我不打算在这种情况下重试.重试400s无济于事,因为错误的请求在几毫秒后仍然是一个错误的请求.

我想还有其他原因不能重试一些其他类型的错误,但是哪些错误以及为什么?

http httpresponse spring-retry hystrix microservices

13
推荐指数
2
解决办法
4378
查看次数

HttpContext.Response.Body.Position = 0 - “不支持指定的方法”错误

我已经设置了一些日志中间件,可以使用 HttpContext 获取和记录信息。

我需要将 HttpResponse.Body 的位置设置为 0 以读取整个流,但是,无论我尝试什么,它都会抛出“不支持指定的方法”并失败。

这对我来说很奇怪,因为 position 内置于 HttpResponse.Body 中,我之前成功使用过它。

我还尝试使用 HttpResponse.Body.Seek 获得相同的结果。

在这一点上我被卡住了,任何帮助将不胜感激。

更新:一旦我将 response.body 移动到新的内存流中,我就能够改变它的位置,但是,现在它返回一个空的主体。

public async Task Invoke(HttpContext context)
        {
            //Retrieve request & response
            var request = context.Request;
            var response = context.Response;

            if (request.Path != "/")
            {
                var reqBody = request.Body;
                var resBody = response.Body;
                string path = request.Path;
                string method = request.Method;
                string queryString = HttpUtility.UrlDecode(request.QueryString.ToString());
                int statusCode = context.Response.StatusCode;

                var buffer = new byte[Convert.ToInt32(request.ContentLength)];
                await request.Body.ReadAsync(buffer, 0, buffer.Length);
                var reqBodyText = Encoding.UTF8.GetString(buffer); …
Run Code Online (Sandbox Code Playgroud)

c# httpresponse httpcontext

13
推荐指数
2
解决办法
7463
查看次数

cURL 可以检测 307 响应吗?

为了我的研究,我需要 cURL fqdn 并获取它们的状态代码。(对于 Http、Https 服务)但是有些 http url 以 https 的形式打开,尽管它使用 cURL 返回 200。(请求成功,无重定向)

curl -I  http://example.example.com/
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 22 Nov 2021 10:43:32 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 64991
Connection: keep-alive
Keep-Alive: timeout=20
Vary: Accept-Encoding
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Link: <https://example.example.com/>; rel=shortlink
X-Powered-By: WP Engine
X-Cacheable: SHORT
Vary: Accept-Encoding,Cookie
Cache-Control: max-age=600, must-revalidate
X-Cache: HIT: 10
X-Cache-Group: normal
Accept-Ranges: bytes
Run Code Online (Sandbox Code Playgroud)

如上所示,我收到了 200 个带有curl 请求的响应。但我可以在浏览器中看到 307 代码。(如下图所示)

Request URL: http://example.example.com/
Request Method: …
Run Code Online (Sandbox Code Playgroud)

https curl http httpresponse

13
推荐指数
2
解决办法
1万
查看次数