当前位置:  开发笔记 > 开发工具 > 正文

无法使用swagger api生成的客户端

如何解决《无法使用swaggerapi生成的客户端》经验,为你挑选了1个好方法。

我正在尝试在项目中使用第三方api,其中访问这些api的方式是昂首阔步

当我使用swagger生成客户端并尝试在我的本地使用我得到错误了

io.swagger.client.ApiException: java.net.SocketTimeoutException: connect timed out
    at io.swagger.client.ApiClient.execute(ApiClient.java:973)
    at io.swagger.client.api.PlatformApi.getAppsWithHttpInfo(PlatformApi.java:729)
    at io.swagger.client.api.PlatformApi.getApps(PlatformApi.java:716)
    at io.swagger.client.api.testSample.getNodesTest(testSample.java:16)
    at io.swagger.client.api.testSample.main(testSample.java:29)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.squareup.okhttp.internal.Platform.connectSocket(Platform.java:120)
    at com.squareup.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:141)
    at com.squareup.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
    at com.squareup.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
    at com.squareup.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
    at com.squareup.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
    at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
    at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
    at com.squareup.okhttp.Call.getResponse(Call.java:286)
    at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:243)
    at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205)
    at com.squareup.okhttp.Call.execute(Call.java:80)
    at io.swagger.client.ApiClient.execute(ApiClient.java:969)
    ... 9 more

我正在尝试使用生成的客户端中的一种方法,如下所示

包io.swagger.client.api;

import com.squareup.okhttp.OkHttpClient;
import io.swagger.client.ApiClient;
import io.swagger.client.ApiException;
import io.swagger.client.Configuration;
import io.swagger.client.model.AppModel;
import io.swagger.client.model.NodeModel;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class testSample {
    private final PlatformApi api = new PlatformApi();
    public void getNodesTest() throws ApiException {
        List response = api.getApps();
        System.out.print("------------------------inside testsample------------------------");
        System.out.print(response);
    }

    public static void main(String args[]){
        testSample t1=new testSample();
        System.out.print("------------------------inside main------------------------");
        try{
            ApiClient defaultApiClient = Configuration.getDefaultApiClient();
            ApiClient apiClient = t1.api.getApiClient();
            System.out.println(defaultApiClient);
            System.out.println(apiClient);
            t1.getNodesTest();
        }
        catch(Exception e){
            System.out.println("inside exeption");
            e.printStackTrace();
        }



    }
}

请提供一些建议如何在本地使用swagger生成的java客户端



1> kaya..:

我希望这些可以帮助某人;

DefaultApi defaultApi = new DefaultApi();
ApiClient apiClient = new ApiClient();
apiClient.setBasePath("http://....");
apiClient.addDefaultHeader("Authorization", "bearer TOKEN");
OkHttpClient httpClient = apiClient.getHttpClient();
httpClient.setConnectTimeout(60, TimeUnit.SECONDS);
httpClient.setReadTimeout(60, TimeUnit.SECONDS);
httpClient.setWriteTimeout(60, TimeUnit.SECONDS);
defaultApi.setApiClient(apiClient);

SomeModel var1 = defaultApi.getNodesTest();

发电机采样指令;

> java -jar swagger-codegen-cli-2.2.2.jar generate -l java -o myModule --library okhttp-gson -i http://..../swagger

下载jar文件;

http://central.maven.org/maven2/io/swagger/swagger-codegen-cli/

了解更多信息;

https://github.com/swagger-api/swagger-codegen

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有