小编Anc*_*or9的帖子

C# HttpClient 检测重定向

我需要检测何时存在重定向。我的第一个想法是检查 301 的状态代码,但是:

var link = "https://grnh.se/8dc368b82us?s=LinkedIn&source=LinkedIn";
var responseMessage = await httpClient.GetAsync(link);
Run Code Online (Sandbox Code Playgroud)

responseMessage 返回“OK”,但在浏览器中此链接返回 301 并重定向。

链接重定向

因此,如果我不能依赖于此,那么我决定只将请求 URI 与响应 URI 进行比较。

GetAsync 返回一个,Task<HttpResponseMessage>但 HttpResponseMessage没有响应 URI 的属性。

https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0

System.Net.WebResponse 包含响应 URI 的属性,但我可以将其与 HttpClient 一起使用吗?或者我必须使用 WebRequest 来请求?

https://learn.microsoft.com/en-us/dotnet/api/system.net.webresponse?view=net-5.0

有没有更好的办法?

注意:这将扫描数百万个链接,因此我更愿意实例化一个 HttpClient。Microsoft 建议使用 HttpClient 而不是 WebRequest: https://learn.microsoft.com/en-us/dotnet/api/system.net.webresponse ?view=net-5.0

c# dotnet-httpclient

4
推荐指数
1
解决办法
2564
查看次数

SQL - 非常人性化,但我不理解它背后的概念

我似乎以错误的方式思考sql.我总是写不起作用的东西.

例如,我需要一个变量.所以我认为:

DECLARE @CNT AS INT
SET @CNT = COUNT(DISTINCT database.schema.table.column)
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用......?我在这里使用完全限定的引用,所以我想要的值应该是清楚的.

DECLARE @CNT AS INT
SET @CNT = (SELECT COUNT(DISTINCT database.schema.table.column) FROM column)
Run Code Online (Sandbox Code Playgroud)

这有效...但为什么我必须使用选择?

是否所有内容都必须以DDL或DML语句之一开头?

其次:我无法逐行调试,因为sql语句被视为一步.我可以调试的唯一方法是,如果我选择最里面的子查询并运行它,那么包括下一个外部子查询并运行它,依此类推.

当地人的窗户有吗?

我听说过基于集合的思维而不是迭代思维,我想即使对于函数式语言我仍然是迭代的...迭代只是从最里面的括号到最外面的括号,并应用于整个集合.但即使在这里我遇到麻烦,因为我不知道集合中的哪个值导致错误.

对不起,如果这似乎散乱了......我想这只是反映了我的感受.我不知道如何从许多小组件构建一个大的存储过程......就像在vba中我可以调用另一个子例程并确保我需要的变量是全局的.

tldr:需要概念基础/知道当我输入内容并点击F5时实际发生了什么

sql execution set-based

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

for...of .for 不可迭代(在数组上???)

let collection = [{
    name: 'music',
    views: 20
  },
  {
    name: 'abc',
    views: 32
  },
  {

    name: 'bob',
    views: 20
  }
]

for (const [k, v] of collection) {
  console.log(k, v)
}

console.log(Array.isArray(collection))
Run Code Online (Sandbox Code Playgroud)

Error: .for is not iterable

Array.isArray(collection)返回真

数组怎么可能不可迭代呢?

我真的需要诉诸于此来“获取”每个项目的索引吗?

for (let i = 0; i < collection.length; i++){
    console.log(i, collection[i])
        
}
Run Code Online (Sandbox Code Playgroud)

nvm ...它与 forEach 配合得很好

collection.forEach((k, v) => {
    console.log(k,v)
})
Run Code Online (Sandbox Code Playgroud)

这里……发生什么事了?

注意:我不能使用 for...in b/ci 需要保证订单

javascript arrays for-loop

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