Search code examples
javajettyswaggerswagger-codegen

cannot connect to the server stub using java client


I recently joined a project.I am a beginner. My responsibility is to create server stub, create SDK and create a java client using SDk and communicate with server stub.

I created server stub using,

 java -jar /data/Swagger/swagger-codegen-cli.jar generate \
  -i /data/AM/ame/ameee.json \
  -l spring --library spring-mvc\
  -o /data/stub/spring_mvc

Run it using,

mvn clean package jetty:run

url is,

http://localhost:8002/api/swagger-ui.html

generated SDK using,

java -jar /data/Swagger/swagger-codegen-cli.jar generate \
  -i /data/AM/ame/ameee.json \
  -l java\
  -o /data/stub/SDK

Then i compiled the SDk and imported the .jar file to my client project, this is the code,

import io.swagger.client.*;
import io.swagger.client.auth.*;
import io.swagger.client.model.*;
import io.swagger.client.api.MonatizationAPIApi;

import java.io.File;
import java.util.*;
public class MonatizationAPIApiExample {
    public static void main(String[] args) {

        MonatizationAPIApi apiInstance = new MonatizationAPIApi();

        try {
            List<ParticipantType> result = apiInstance.getAllParticipantTypesUsingGET();
            System.out.println(result);
        } catch (ApiException e) {
            System.err.println("Exception when calling MonatizationAPIApi#getAllParticipantTypesUsingGET");
            e.printStackTrace();
        }
    }
}

I'm still trying to get a connection to the server stub,

this is the error,

Exception when calling MonatizationAPIApi#getAllParticipantTypesUsingGET
io.swagger.client.ApiException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:8080
    at io.swagger.client.ApiClient.execute(ApiClient.java:984)
    at io.swagger.client.api.MonatizationAPIApi.getAllParticipantTypesUsingGETWithHttpInfo(MonatizationAPIApi.java:878)
    at io.swagger.client.api.MonatizationAPIApi.getAllParticipantTypesUsingGET(MonatizationAPIApi.java:865)
    at MonatizationAPIApiExample.main(MonatizationAPIApiExample.java:19)
    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:483)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:8080
    at com.squareup.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:143)
    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:980)
    ... 8 more

Process finished with exit code 0

Here the calling address differ from my server stub address. How can i change it? (I searched everywhere, i can't find an address like this localhost/0:0:0:0:0:0:0:1:8080 in the code.

PLzz help me. Thank you


Solution

  • My guess is that your OpenAPI/Swagger spec does not have a proper host defined: https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/test/resources/2_0/petstore.yaml#L12 and therefore Swagger Codegen defaults it to localhost.

    You can also change the host during runtime in the Configurationobject (Java API client)