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
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.
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.
You can write a Swagger spec for your API manually, or have it generated automatically from annotations in your source code.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With