【问题标题】:How to use OpenAPI generator with corporate proxy?如何将 OpenAPI 生成器与企业代理一起使用?
【发布时间】:2019-12-15 05:21:07
【问题描述】:

我正在尝试使用OpenAPI generator 根据openapi: "3.0.2" json 配置自动生成C# 客户端代码:

openapi-generator generate -i https://test.com/docs/swagger/openapi.json -g csharp-netcore -c open-api-config.json -o DataLakeOpenApiRestClient.cs

这会失败并出现以下错误:

[main] 错误 io.swagger.v3.parser.util.RemoteUrl - 无法读取 java.net.ConnectException:连接超时:连接 在 java.net.DualStackPlainSocketImpl.connect0(本机方法) 在 java.net.DualStackPlainSocketImpl.socketConnect(未知来源) 在 java.net.AbstractPlainSocketImpl.doConnect(未知来源) 在 java.net.AbstractPlainSocketImpl.connectToAddress(未知来源) 在 java.net.AbstractPlainSocketImpl.connect(未知来源) 在 java.net.PlainSocketImpl.connect(未知来源) 在 java.net.SocksSocketImpl.connect(未知来源) 在 java.net.Socket.connect(未知来源) 在 sun.security.ssl.SSLSocketImpl.connect(未知来源) 在 sun.security.ssl.BaseSSLSocketImpl.connect(未知来源) 在 sun.net.NetworkClient.doConnect(未知来源) 在 sun.net.www.http.HttpClient.openServer(未知来源) 在 sun.net.www.http.HttpClient.openServer(未知来源) 在 sun.net.www.protocol.https.HttpsClient.(未知来源) 在 sun.net.www.protocol.https.HttpsClient.New(未知来源) 在 sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(未知 资源) 在 sun.net.www.protocol.http.HttpURLConnection.plainConnect0(未知 资源) 在 sun.net.www.protocol.http.HttpURLConnection.plainConnect(未知 资源) 在 sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(未知 资源) 在 sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(未知 资源) 在 io.swagger.v3.parser.util.RemoteUrl.urlToString(RemoteUrl.java:147) 在 io.swagger.v3.parser.OpenAPIV3Parser.readWithInfo(OpenAPIV3Parser.java:123) 在 io.swagger.v3.parser.OpenAPIV3Parser.readLocation(OpenAPIV3Parser.java:45) 在 io.swagger.parser.OpenAPIParser.readLocation(OpenAPIParser.java:16) 在 org.openapitools.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:586) 在 org.openapitools.codegen.cmd.Generate.run(Generate.java:395) 在 org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:60)

但是,如果我下载 json 文件并使用本地文件输入运行,它可以正常工作:

openapi-generator generate -i open-api-offline-file.json -g csharp-netcore -c open-api-config.json -o DataLakeOpenApiRestClient.cs

我在没有公司代理的计算机上对此进行了测试,它工作正常,所以我的主要嫌疑人是代理。

我设置了HTTP_PROXY和`HTTPS_PROXY,但是没有使用。

问题:如何将 OpenAPI 生成器与企业代理一起使用?

【问题讨论】:

    标签: c# proxy openapi-generator


    【解决方案1】:

    您可以尝试使用-D 设置网络属性:https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html

    例如

    openapi-generator generate -i open-api-offline-file.json -g csharp-netcore -c open-api-config.json -o DataLakeOpenApiRestClient.cs -Dhttps.proxyHost=internal-proxy.mycompany.com -Dhttps.proxyPort=8080
    

    【讨论】:

    • 不幸的是,它没有用,尽管它是有意义的。我也试过-Djava.net.useSystemProxies=true。我想知道openapi-generator 是否真的阅读了这些选项。无论如何,我想我可以通过另一个命令获取内容并使用离线生成。
    • Swagger Parser(OpenAI Generator 的一个依赖项)在解析 OpenAPI/Swagger doc/spec 时使用(或应该)使用这些选项。
    • [DEPRECATED] -D arguments after 'generate' are application arguments and not Java System Properties, please consider changing to -p, or apply your options to JAVA_OPTS, or move the -D arguments before the jar option.
    猜你喜欢
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2018-10-27
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 2016-09-24
    相关资源
    最近更新 更多