Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to use generated client from swagger api

I am trying to use a third party api in the project where the way to access those apis are provide in swagger

When i generate the client using swagger and try to use in my local i am getting the error has

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

i am trying to use one of the method from the generated client as shown below

package 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<AppModel> 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();
        }



    }
}

Please provide some suggestion how to use the generated java client from swagger in local

like image 502
dhana lakshmi Avatar asked Jan 17 '17 17:01

dhana lakshmi


People also ask

How does swagger generate Client code?

Method 1: Use the swagger editor Alternatively you can select File , Import File and upload the downloaded swagger. json file. Next select Generate client and choose the language of your choice. The end result is a zip file you can download with the generated client code.

What is generate server in swagger?

Swagger has a tool called the swagger-code-generator which allows you to generate Server or Client code for the API specification that you defined. By using this tool developers can save time by not having to manually set up the structure of the API involving the different web frameworks.

Is swagger auto generated?

You can write a Swagger spec for your API manually, or have it generated automatically from annotations in your source code.


1 Answers

I hope these helps someone;

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();

generator sample command;

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

to download jar file;

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

for more info;

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

like image 148
kaya Avatar answered Oct 04 '22 13:10

kaya