1

I am working with an Android jersey client that sends a form to a web-service. I am getting

javax.ws.rs.ProcessingException: java.net.ConnectException: failed to connect to /127.0.0.1 (port 8080): connect failed: ECONNREFUSED (Connection refused)

I don't have any proxies configured. I can use the web-service via Postman(browser shows it as well).
The SO posts that I have seen till now all talk about having proxies or the server being inactive, both of which is untrue in my case.
My android client side code for connecting to the web-service:

public class SignUpAction implements Runnable {
    private Client client;
    private WebTarget webTarget;
    private Form form;   
    private RegistrationBeanInterface rbI;         
    @Override
    public void run() {
        client = JerseyClientBuilder.newClient();
        try {
            webTarget = client.target(new URI("http://127.0.0.1:8080/WebApp/User/Register"));
            form = new Form();

            Response response = webTarget.request(MediaType.APPLICATION_FORM_URLENCODED).post(Entity.form(form)); 
            this.statusCode = response.getStatus();
        } catch (URISyntaxException e) {
            e.getReason();
        }
    }    
    public int getStatusCode(){
        return this.statusCode;
    }
}

And this is how I call the connecting class inside my activity:

signUpAction = signUpAction.createSignUpAction();
executorService.execute(signUpAction);
statusCode = signUpAction.getStatusCode();
if(statusCode == 200){
   Intent intent = new Intent(this, SignInActivity.class);
   startActivity(intent);
}

My Gradle dependency for Jersey

implementation 'org.glassfish.hk2.external:javax.inject:2.4.0-b06'    
implementation('org.glassfish.jersey.containers:jersey-container-servlet:2.25.1') {
        exclude module : 'javax.inject'
    }

This is my stacktrace :

The following warnings have been detected: WARNING: HK2 service reification failed for [org.glassfish.jersey.message.internal.DataSourceProvider] with an exception:
          MultiException stack 1 of 4
          java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: javax.activation.DataSource
              at org.glassfish.hk2.utilities.cache.LRUHybridCache.compute(LRUHybridCache.java:315)
              at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperImpl.getAllMethods(ClassReflectionHelperImpl.java:108)
              at org.jvnet.hk2.internal.Utilities.findInitializerMethods(Utilities.java:1341)
              at org.jvnet.hk2.internal.DefaultClassAnalyzer.getInitializerMethods(DefaultClassAnalyzer.java:107)
              at org.glassfish.jersey.internal.inject.JerseyClassAnalyzer.getInitializerMethods(JerseyClassAnalyzer.java:242)
              at org.jvnet.hk2.internal.Utilities.getInitMethods(Utilities.java:218)
              at org.jvnet.hk2.internal.ClazzCreator.initialize(ClazzCreator.java:145)
              at org.jvnet.hk2.internal.ClazzCreator.initialize(ClazzCreator.java:180)
              at org.jvnet.hk2.internal.SystemDescriptor.internalReify(SystemDescriptor.java:740)
              at org.jvnet.hk2.internal.SystemDescriptor.reify(SystemDescriptor.java:694)
              at org.jvnet.hk2.internal.ServiceLocatorImpl.reifyDescriptor(ServiceLocatorImpl.java:461)
              at org.jvnet.hk2.internal.ServiceLocatorImpl.narrow(ServiceLocatorImpl.java:2288)
              at org.jvnet.hk2.internal.ServiceLocatorImpl.access$1200(ServiceLocatorImpl.java:125)
              at org.jvnet.hk2.internal.ServiceLocatorImpl$9.compute(ServiceLocatorImpl.java:1373)
              at org.jvnet.hk2.internal.ServiceLocatorImpl$9.compute(ServiceLocatorImpl.java:1368)
              at org.glassfish.hk2.utilities.cache.internal.WeakCARCacheImpl.compute(WeakCARCacheImpl.java:116)
              at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetAllServiceHandles(ServiceLocatorImpl.java:1430)
              at org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServiceHandles(ServiceLocatorImpl.java:1355)
              at org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServiceHandles(ServiceLocatorImpl.java:1344)
              at org.glassfish.jersey.internal.inject.Providers.getServiceHandles(Providers.java:354)
              at org.glassfish.jersey.internal.inject.Providers.getCustomProviders(Providers.java:201)
              at org.glassfish.jersey.message.internal.MessageBodyFactory.<init>(MessageBodyFactory.java:221)
              at java.lang.reflect.Constructor.newInstance(Native Method)
              at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1375)
              at org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:272)
              at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:366)
              at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487)
              at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:83)
              at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:71)
              at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:97)
              at java.util.concurrent.FutureTask.run(FutureTask.java:237)
              at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:154)
              at org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:199)
              at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:122)
              at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2022)
              at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService(ServiceLocatorImpl.java:774)
              at org.jvnet.hk2.internal.ServiceLocatorImpl.getUnqualifiedService(ServiceLocatorImpl.java:786)
              at org.jvnet.hk2.internal.IterableProviderImpl.get(IterableProviderImpl.java:111)
              at org.glassfish.jersey.client.RequestProcessingInitializationStage.apply(RequestProcessingInitializationStage.java:97)
              at org.glassfish.jersey.client.RequestProcessingInitializationStage.apply(RequestProcessingInitializationStage.java:67)
              at org.glassfish.jersey.process.internal.Stages$LinkedStage.apply(Stages.java:308)
              at org.glassfish.jersey.process.internal.Stages.process(Stages.java:171)
            at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:25
E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
                  Process: com.stuff.echo01.dummypracticeapplication_01_09_2018, PID: 3677
                  javax.ws.rs.ProcessingException: java.net.ConnectException: failed to connect to /127.0.0.1 (port 8080): connect failed: ECONNREFUSED (Connection refused)
                      at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:287)
                      at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252)
                      at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:684)
                      at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:681)
                      at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
                      at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
                      at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
                      at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
                      at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:681)
                      at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:437)
                      at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:343)
                      at com.stuff.echo01.dummypracticeapplication_01_09_2018.authpackage.SignUpAction.run(SignUpAction.java:90)
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                      at java.lang.Thread.run(Thread.java:818)
                   Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 8080): connect failed: ECONNREFUSED (Connection refused)
                      at libcore.io.IoBridge.connect(IoBridge.java:124)
                      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
                      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
                      at java.net.Socket.connect(Socket.java:884)
                      at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
                      at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
                      at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)
                      at com.android.okhttp.Connection.connect(Connection.java:152)
                      at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
                      at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
                      at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
                      at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
                      at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
                      at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
                      at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
                      at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245)
                      at com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.getOutputStream(TrackedHttpURLConnection.java:288)
                      at com.android.tools.profiler.support.network.httpurl.HttpURLConnection$.getOutputStream(HttpURLConnection$.java:212)
                      at org.glassfish.jersey.client.internal.HttpUrlConnector$4.getOutputStream(HttpUrlConnector.java:390)
                      at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:200)
                      at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:194)
                      at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:228)
                      at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$UnCloseableOutputStream.write(WriterInterceptorExecutor.java:299)
                      at java.io.OutputStreamWriter.flushBytes(OutputStreamWriter.java:170)
                      at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:161)
                      at org.glassfish.jersey.message.internal.ReaderWriter.writeToAsString(ReaderWriter.java:193)
                      at org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:130)
                    at org.glassfish.jersey.messag  
7
  • Are you running the server on your Android device? Commented Feb 6, 2018 at 7:32
  • I am running the server on my PC. Commented Feb 6, 2018 at 7:32
  • does your URL proper working and valid? Commented Feb 6, 2018 at 7:32
  • I can do everything with Postman. It is valid. Even the browser throws the method not allowed exception when I send a get request Commented Feb 6, 2018 at 7:33
  • 1
    use 10.0.2.2 (as long as your server is mapped to localhost of the pc) instead of 127.0.0.1 Commented Feb 6, 2018 at 7:35

2 Answers 2

1

Change

http://127.0.0.1:8080/WebApp/User/Register

to

http://10.0.2.2:8080/WebApp/User/Register

because Android emulator maps 10.0.2.2 (as long as your server is mapped to localhost of the pc) to 127.0.0.1 of host machine.

Here is the Google documentation https://developer.android.com/studio/run/emulator-networking.html

Sign up to request clarification or add additional context in comments.

Comments

1

Since the server isn't running on your phone, you can't connect to it using 127.0.0.1:port as it isn't on the device itself. You have to find the internal IP of the server (192.168.*.*) and connect to that instead.

127.0.0.1 or localhost requires the server/target to be on the current device. Meaning you can connect to 127.0.0.1 on the computer, but not from a different device on the same network.


If your phone and computer are on two different networks, that's an entirely different problem. You have to make sure port forwarding is enabled, and you have to connect to the external IP of the router

2 Comments

How to find the internal IP of the server? I am using GlasFish 5.0.
ipconfig on windows, ifconfig (IIRC) on linux

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.