Android / Eclipse / Emulator / WAMP: Error 503 and timeouts - eclipse

I am trying to request JSON data from a PHP script in my Android app.
The whole thing works well when I'm directly connecting my mobile phone and directly access the "real" Internet webserver. However, it doesn't work at all using the emulator and localhost (WAMP installation). Running the script directly on the local webserver, again, gives me the expected results- only if I am calling it on the same machine using the emulator, the troubles begin.
Here are the combinations I have tried so far (the scripts are located in the subdirectory "zz" of the root):
private static String url_all_venues = "http://10.0.2.2/zz/pullvenuesjson.php";
or
private static String url_all_venues = "http://10.0.2.2:80/zz/pullvenuesjson.php";
leads to the following exception: E/JSON Parser(657): Error parsing data org.json.JSONException: Value
When I'm trying the following:
private static String url_all_venues = "http://10.0.2.2:8080/zz/pullvenuesjson.php";
the code runs 'forever' and I'm getting a timeout error after about 5 minutes.
Any idea how to fix that so I can also test my app on my local webserver / the emulator? Most probably the problem is in my local Apache configuration, but then, I'm not sure…
EDIT:
Here is some of the code that seems to trigger the error:
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
"url" is the one mentioned above. As mentioned in my comment below, it looks as if the problem comes from the local WAMP webserver not responding appropriately, since the code works fine when I'm directly accessing the "real" server via the Internet (i.o.w, do nothing else than changing the URL to the Internet address of the php script). The odd thing is that the script also works fine when I run it locally, but NOT through the emulator.

I finally figured it out! I logged the transferred data using Log.d(..) and found out that the username/password combination was not valid as I didn't check for the localhost condition... The script and app retrieves the data just fine now on both, localhost and the web. Thanks for your inquiries which helped me to get down to the root of the error!
[Answered myself in order to avoid the Q showing up as unanswered]

Related

Vue3 and Supabase when connecting via Remote device I get "WebSocket connection to 'ws://localhost:4000/ws' failed: "

I am using a Nuxt3 server currently running in develop mode that uses a Supabase Database and when I try to connect to the server from a diffrent device then my localhost I get a constant error of "WebSocket connection to 'ws://localhost:4000/ws' failed: " in the develop console.
I want this error to stop because I have a diffrent problem and want to rule out this error as a source for problems.
So far I didnt really try much because I just dont know where to start. I guess that it has something to do with Supabases Postgres database, but I am quite new to Vue3 and Supabase so I dont know if a URL needs to be configured diffrently.
Appreciate it if someone with more knowlede could help me!
Update:
This is how the error looks on a remote device
And this is how it looks on the local device
For Nuxt my Package.json looks like this
And my nuxt.config.ts looks like this
Additional information that might be usefull:
I store the supabase url and key in a .env file and when I use supabase I do it with:
const user = useSupabaseUser()
const client = useSupabaseClient()
The error always occures when I try to access the website by using the Network URL provided by the yarn dev command. It happens on mobile devices aswell as other computers

javascript getMonth does not works on remote server

Actually on a react.js+java spring project, I try to get month of a javascript Date object, created with a sql datetime retrieved value.
Locally on my wamp server i've got no trouble. But in prod environment served by a tomcat, my variable just return nothing.
Even chrome debugger just skip the line and seems unable to return any value, not even an undefined..
I think the problem is more about locale value but i'm not sure at all and i d'ont know how to fix it..
My code example above is the most basic usage we can do with Date object in javascript...
let dateTime = new Date(sqlDateTime);
let month = dateTime.getMonth() +1;
Here you can see my code in chrome dev tools from remote server on the first image and on localhost on the second image
debug on remote host
debug on localhost
In both we can see the sql datetime well retrieved and in the case of localhost the getMonth value is ok and in the remote case not
Thanks for your help

Postman : socket hang up

I just started using Postman. I had this error "Error: socket hang up" when I was executing a collection runner. I've read a few post regarding socket hang up and it mention about sending a request and there's no response from the server side and probably timeout. How do I extend the length of time of the request in Postman Collection Runner?
For me it was because my application was switched to https and my postman requests still had http in them. Changing postman to https fixed it.
Socket hang up, error is port related error. I am sharing my experience. When you use same port for connecting database, which port is already in use for other service, then "Socket Hang up" error comes out.
eg:- port 6455 is dedicated port for some other service or connection. You cannot use same port (6455) for making a database connection on same server.
Sometimes, this error rises when a client waits for a response for a very long time. This can be resolved using the 202 (Accepted) Http code. This basically means that you will tell the server to start the job you want it to do, and then, every some-time-period check if it has finished the job.
If you are the one who wrote the server, this is relatively easy to implement. If not, check the documentation of the server you're using.
Postman was giving "Could not get response" "Error: socket hang up".
I solved this problem by adding the Content-Length http header to my request
Are you using nodemon, or some other file-watcher? In my case, I was generating some local files, uploading them, then sending the URL back to my user. Unfortunately nodemon would see the "changes" to the project, and trigger a restart before a response was sent. I ignored the build directories from my file-watcher and solved this issue.
Here is the Nodemon readme on ignoring files: https://github.com/remy/nodemon#ignoring-files
I have just faced the same problem and I fixed it by close my VPN. So I guess that's a network agent problem. You can check if you have some network proxy is on.
this happaned when client wait for response for long time
try to sync your API requests from postman
then make login post and your are done
I defined Authenticate method to generate a token and mentioned its return type as nullable string as:
public string? Authenticate(string username, string password)
{
if(!users.Any(u => u.Key==username && u.Value == password))
{
return null;
}
var tokenHandler = new JwtSecurityTokenHandler();
var tokenKey = Encoding.ASCII.GetBytes(key);
var tokenDescriptor = new SecurityTokenDescriptor()
{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.Name, username)
}),
Expires = DateTime.UtcNow.AddHours(1),
SigningCredentials = new SigningCredentials(new
SymmetricSecurityKey(tokenKey),
SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);
}
Changing nullable string to simply string fixed "Socket Hang Up" issue for me!
If Postman doesn't get response within a specified time it will throw the error "socket hang up".
I was doing something like below to achieve 60 minutes of delay between each scenario in a collection:
get https://postman-echo.com/delay/10
pre request script :-
setTimeout(function(){}, [50000]);
I reduced time duration to 30 seconds:
setTimeout(function(){}, [20000]);
After that I stopped getting this error.
I solved this problem with disconnection my vpn. you should check if there is vpn connected.
What helped for me was replacing 'localhost' in the url to http://127.0.0.1 or whatever other address your local machine has assigned localhost to.
Socket hang up error could be due to the wrong URL of the API you are trying to access in the postman. please check the URL once carefully.
It's possible there are 2 things, happening at the same time.
The url contains a port which is not commonly used AND
you are using a VPN or proxy that does not support that port.
I had this problem. My server port was 45860 and I was using pSiphon anti-filter VPN. In that condition my Postman reported "connection hang-up" only when server's reply was an error with status codes bigger than 0. (It was fine when some text was returning from server with no error code.)
When I changed my web service port to 8080 on my server, WOW, it worked! even though pSiphon VPN was connected.
Following on Abhay's answer: double check the scheme. A server that is secured may disconnect if you call an https endpoint with http.
This happened to me while debugging an ASP.NET Core API running on localhost using the local cert. Took me a while to figure out since it was inside a Postman environment and also it was a Monday.
In my case, adding in the header the "Content-length" parameter did the job.
My environment is
Mac:
[Terminal command: sw_vers]
ProductName: macOS
ProductVersion: 12.0.1. (Monterey)
BuildVersion: 21A559
mysql:
[Terminal command: mysql --version]
Ver 8.0.27 for macos11.6 on x86_64 (Homebrew)
Apache:
[Terminal command: httpd -v]
Server version: Apache/2.4.48 (Unix)
Server built: Oct 1 2021 20:08:18.
*Laravel
[Terminal command: php artisan --version]
Laravel Framework 8.76.2
Postman
Version 9.1.5 (9.1.5)
socket hang up error can also occur due to backend API handling logic.
For example - I was trying to create an Nginx config file and restart the service by using the incoming API request body. This resulted in temporary disconnection of the Nginx service while handling the API request and resulted in socket hang up.
If you have tried all the steps mentioned in other comments, and still face the issue. I suggest you check the API handler code thoroughly.
I handled the above-mentioned example by calling the Nginx reset method with delay and a separate API to check the status of the prev reset request.
For me it was giving Socket Hung Up error only while running Collection Runner not with single request.
Adding a small delay (100-300ms) in the collection Runner solved issue for me.
In my case, I had to provide --ssl-client-key and --ssl-client-cert files to overcome these errors.
Great error, it is so general that for everyone something different helps.
In my case I was not able to fix it and what is really funny is fact that I am expecting to get multipart file on one endpoint. When I prepare request in postman I get "Error: socket hang up". If I change for other endpoint(even not existing) is exactly that same error. But when I call any endpoint without body that request works and after that all subsequent attempts works perfectly.
In my case this is purely postman issue. Any request using curl is never giving that error.
For me the issue was related to the mismatch of the http versions on the client and server.
Client was assuming http v2 while server (spring boot/ tomcat) in the case was http v1
When on the server I configured server to v2, the issue got resolved in a go.
In spring boot you can configure the http v2 as below:-
server.http2.enabled=true
Note - Also the scenario was related to using client auth mechanism (i.e. MTLS)
Without client auth/ MTLS it worked without issues but for client auth the version setting in spring boot was the important rescue point
"socket hang up" is proxy related issue. when we run same collection with the help of newman on jenkins then all test are passed.
change the proxy setting
https://docs.cloudfoundry.org/cf-cli/http-proxy.html
I had the same issue: "Error: socket hang up" when sending a request to store a file and backend logs mentioned a timeout as you described. In my case I was using mongoDB and the real problem was my collection’s array capacity was full. When I cleared the documents in that collection the error was dismissed. Hope this will help someone who faces a similar scenario.
"Socket Hung Up" can be on-premise issue some time's, because, of bottle neck in %temp% folder, try to free up the "temp" folder and give a try
I fixed this issue by disabling Postman token header. Screenshot:
I face the same issue in when calling a SOAP API with POSTMAN
by adding the following data in the header my issue was fixed
Key:Content-Length
Value:<calculated when request is sent>
In my case, I was incorrectly using a port reserved for https version of my api.
For example, I was supposed to use https://localhost:6211, but I was using http://localhost:6211.
It is port related error. I was trying to hit the API with an invalid port.
if it helps to anybody... In my case, i just forgot to use json parser (const jsonParser = express.json();) to have access to json type of objects sending to the server from the client. Be careful, don't waste your time =)
This happened to me while I was learning ASP.NET Web API.
In my case it was because the SSL certificate verification.
I was using VS Code so I oversee about SSL certificate verification and it came with https protocol.
I solved this with testing my endpoints with http protocol.
Another approach can be just disabling the SSL certificate Verification on Postman Settings.
This error was coming for me since the request url is not correct --> here you can see my url does not contains : after http
The url I was using was : http//locahost:9090/someApi
Solution
adding a colon new url is http://localhost:9090/someApi
the socket error was not coming
This is just my case may be your case is totally different as mentioned in the other answers :)

Side-loaded Windows 8.1 application generates an exception when calling methods of an RESTful Web API

I have developed a Line-of-Business (LOB) Windows 8.1 application for one of our clients. The app was developed in Visual Studio 2015, on my 64-bit Windows 8.1 Enterprise laptop. The application makes use of a RESTful Web API that is running under IIS Express on the same laptop. The IIS Express has been configured to expose the RESTful Web API to the outside world, such that I can make Web API calls with Fiddler from a different machine. My app works just fine when I test it with the VS2015 Simulator, even when I configure it to use the correct IP address of the Web API (not the localhost).
The client wants to deploy this app in production on some DELL tablets that will run Windows 10. I have one of these tablets and it has 64-bit Windows 10 Enterprise on it. When I side-load my app on the tablet, I launch it and I save in its settings the URL for the Web API service. I relaunch the app, but the first call into the Web API fails to complete. I log an exception informing me that "An error occurred while sending the request". The inner exception message is "Unable to connect to the remote server". The line of code that triggers this exception is this one:
HttpResponseMessage response = await WebApiHttpClient.GetAsync("api/user", HttpCompletionOption.ResponseContentRead).ConfigureAwait(continueOnCapturedContext: false);
where the WebApiHttpClient object is a class static member constructed like this:
if (WebApiHttpClient == null)
{
WebApiHttpClient = new HttpClient(WebApiAuthClientHandler)
{
BaseAddress = new Uri(_serviceUri), // _serviceUri is a string that looks like this "http://10.120.5.201:53045"
Timeout = new TimeSpan(0, 0, 150)
};
WebApiHttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
The WebApiAuthClientHandler is also a class static member that is instantiated like this:
if (WebApiAuthClientHandler == null)
{
WebApiAuthClientHandler = new HttpClientHandler()
{
Credentials = CredentialCache.DefaultNetworkCredentials,
ClientCertificateOptions = ClientCertificateOption.Automatic
};
}
The exception is triggered about 21 seconds after my call so it can't be a timeout since the timeout is set to 150 seconds.
The Web API is running on my laptop, as I mentioned before and using the node.js iisexpress-proxy tool I managed to expose the local URL to the outside world so that I can make Web API calls using Fiddler running on the tablet.
Also, in my app's Package.appxmanifest/Capabilities I have checked the "Private Networks (Client & Server)".
The Event Viewer does not log any additional information.
Can anyone make a suggestion on why the error is triggered?
TIA,
Eddie
The error message I have in my 3rd comment was caused by the fact that I had Fiddler running at the same time. When running without Fiddler, the application receives a different error, but that will be the subject of a different question here, on StackOverflow.

Getting AccessTokenRefreshError: invalid_grant in Google API fro service account

I am following this example
https://code.google.com/p/google-api-python-client/source/browse/samples/service_account/tasks.py
credentials = SignedJwtAssertionCredentials(
'141491975384#developer.gserviceaccount.com',
key,
scope='https://www.googleapis.com/auth/tasks')
http = httplib2.Http()
http = credentials.authorize(http)
service = build("tasks", "v1", http=http)
# List all the tasklists for the account.
lists = service.tasklists().list().execute(http=http)
pprint.pprint(lists)
The issue is , it works sometimes and i get the lists as JSON and after running program few more times i get error
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 710, in _do_refresh_request
raise AccessTokenRefreshError(error_msg)
oauth2client.client.AccessTokenRefreshError: invalid_grant
I'm interface Google Drive but found the same error. In Issue 160 there is a report of setting the appropriate time on your local computer. Ever since I upgraded to Mac Mavericks I found that the I need to keep updating my system time. I was getting your reported error, set my system time back to current and I eliminated the error.
Are you running this code in a VM or sandboxed environment? If so, it could just be that your VM's clock isn't synchronised to your host machine. See a response to a similar question here.
I suffered the same (frustrating) problem and found that simply restarting my VM (ensuring the time was synchronised to the host machine (or at least set to the local timezone) fixed the problem.
Oauth service is highly dependent on the time, make sure your client uses NTP or another time syncing mechanism.
Test with curl -I https://docs.google.com/ ; date -u
You should see the same Date: (or whithin a few seconds) for this to work