小编evi*_*obu的帖子

C#将Accept标头添加到HttpClient

这两个电话有什么区别?我的最终目标是通过网络 Accept: application/json发送,而不是附加到一些默认的其他MIME类型集.

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
Run Code Online (Sandbox Code Playgroud)

client.DefaultRequestHeaders
  .Accept
  .Add(new MediaTypeWithQualityHeaderValue("application/json"));
Run Code Online (Sandbox Code Playgroud)

我的CLR是.NET Core 2.0.

嗅探电线显示没有区别:

# just .Add("Accept"...
~ % nc -l 8000
GET / HTTP/1.1
Connection: Keep-Alive
Accept: application/json
[...]

# with MediaTypeWithQualityHeaderValue
~ % nc -l 8000
GET / HTTP/1.1
Connection: Keep-Alive
Accept: application/json
[...]
Run Code Online (Sandbox Code Playgroud)

那么,除了这种奇怪的命名之外,没有什么可以在这里获得的吗?

c# httpclient dotnet-httpclient http-accept-header .net-core-2.0

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

CPU 分钟/天 azure 的说明

如果我在 Azure 应用服务上托管我的应用程序超过 60 分钟,即使我的应用程序没有进行任何处理,我是否需要付费?

azure azure-app-service-plans azure-web-app-service

8
推荐指数
3
解决办法
8310
查看次数

将证书和私钥加载到 Java KeyStore

我正在尝试从 Azure Key Vault 获取证书及其私钥,然后调用远程服务器并进行客户端证书身份验证。

第一部分运行良好(从 Key Vault 获取),但是我完全无法将公共和私有材料导入 KeyStore。

我试过了

keyStore.load(publicKey, null);
keyStore.load(new ByteArrayInputStream(privateKey.getBytes()),
    "thePassphrase".toCharArray());
Run Code Online (Sandbox Code Playgroud)

但这导致

java.io.IOException: DER input, Integer tag error
        at java.base/sun.security.util.DerInputStream.getInteger(DerInputStream.java:192)
        at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1995)
        at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222)
        at java.base/java.security.KeyStore.load(KeyStore.java:1479)
Run Code Online (Sandbox Code Playgroud)

这是全部内容减去我不知道如何实施的内容 -

keyStore.load(publicKey, null);
keyStore.load(new ByteArrayInputStream(privateKey.getBytes()),
    "thePassphrase".toCharArray());
Run Code Online (Sandbox Code Playgroud)

我如何将证书及其私钥放入 KeyStore 以便我可以在我的 HTTP 客户端中使用它?

java certificate keystore x509 azure-keyvault

5
推荐指数
2
解决办法
2575
查看次数

OpenJDK 11 在 JDBC 连接字符串中使用 TLS 1.2

我的远程 MySQL 服务器只接受通过 TLS 1.2 的连接。如何在 JDBC (OpenJDK 11) 中选择协议版本?

SQL State: 28000
java.sql.SQLException: TLS version used does not meet minimal requirements
for this server. Please use a higher TLS version and retry.
Run Code Online (Sandbox Code Playgroud)
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.21</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我试过添加enabledSslProtocolSuites到我的连接字符串,但无济于事。

jdbc:mysql://{server}.mysql.database.azure.com:3306/{database_name}?
  serverTimezone=Australia/Melbourne&useSSL=true&requireSSL=true&enabledSslProtocolSuites=TLSv1.2
Run Code Online (Sandbox Code Playgroud)

-Djdk.tls.client.protocols="TLSv1.2" -Djavax.net.debug=all在启动时添加会mvn exec:java显示对使用 TLS 1.1 的Client Hello 的尝试。

javax.net.ssl|DEBUG|0C|azuremysqltest.App.main()|
2020-08-31 09:16:34.400 UTC|ClientHello.java:653|
Produced ClientHello handshake message (
"ClientHello": {
  "client version"      : "TLSv1.1",
  "random"              : "0D 94 D2 90 A7 C0 ...",
  "session …
Run Code Online (Sandbox Code Playgroud)

java mysql ssl jdbc

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

在 Go 中处理来自 base64 解码的错误

考虑这个简单的 base64 解码片段:

package main

import (
    "fmt"
    "encoding/base64"
)

func main() {
    const encoded string = "aGVsbG8=" // hello
    decoded, err := base64.StdEncoding.DecodeString(encoded)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(decoded))
}
Run Code Online (Sandbox Code Playgroud)

这会按预期产生hello。现在,如果我故意传入损坏的输入,例如

const encoded string = "XXXXXaGVsbG8="
Run Code Online (Sandbox Code Playgroud)

然后我点击了恐慌线,这给了我:

panic: illegal base64 data at input byte 11

goroutine 1 [running]:
main.main()
    /tmp/sandbox422941756/main.go:12 +0x140
Run Code Online (Sandbox Code Playgroud)

查看源代码这个问题,除了匹配字符串文字并向调用者返回更有意义的错误消息之外,这里似乎没有什么可做的:

if err != nil {
    if strings.Contains(err.Error(), "illegal base64 data at input byte") {
        panic("\nbase64 input is corrupt, check …
Run Code Online (Sandbox Code Playgroud)

error-handling base64 go

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

如何在GitHub Actions中使用bash表达式设置env var?

在GitHub Actions中,我想评估bash表达式,然后将其分配给环境变量-

    - name: Tag image
      env:
        GITHUB_SHA_SHORT: ${{ $(echo $GITHUB_SHA | cut -c 1-6) }}
      ..do other things...
Run Code Online (Sandbox Code Playgroud)

但是,这种幼稚的尝试失败了。根据文档,这似乎不受支持,但是稍微干净的解决方法就可以了。

github-actions

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

如何使用Python gRPC处理流式消息

我正在关注此Route_Guide示例

有问题的示例将触发并读取消息,而无需回复特定的消息。后者是我想要实现的目标。

这是我到目前为止的内容:

import grpc
...

channel = grpc.insecure_channel(conn_str)
try:
    grpc.channel_ready_future(channel).result(timeout=5)
except grpc.FutureTimeoutError:
    sys.exit('Error connecting to server')
else:
    stub = MyService_pb2_grpc.MyServiceStub(channel)
    print('Connected to gRPC server.')
    this_is_just_read_maybe(stub)


def this_is_just_read_maybe(stub):
    responses = stub.MyEventStream(stream())
    for response in responses:
        print(f'Received message: {response}')
        if response.something:
            # okay, now what? how do i send a message here?

def stream():
    yield my_start_stream_msg
    # this is fine, i receive this server-side
    # but i can't check for incoming messages here
Run Code Online (Sandbox Code Playgroud)

我似乎在存根上没有read()write(),所有内容似乎都是通过迭代器实现的。

我该如何发送消息 …

python stream grpc

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

如何使用ffmpeg跳过开始帧

我已经使用ffmpeg创建视频的简短预览...

$length = $length_video/5;

$ffmpeg_path." -i ".$content." -vf select='lt(mod(t\,".$length.")\,1)',setpts=N/FRAME_RATE/TB -af aselect='lt(mod(t\,".$length.")\,1)',asetpts=N/SR/TB -an ".$content_new.";
Run Code Online (Sandbox Code Playgroud)

实际上,这将创建5秒。视频。问题是因为第一帧是从0-1秒提取的。

有机会跳过第一帧并提取下5个吗?

问题是因为视频介绍导致第一帧实际上无用

php ffmpeg

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