posted 7 months ago
Issue in Calling webservice with special character in hostname using HTTP GET method,
When i execute it using java code i am getting 401 unauthorized. But the same is working successfully in postman
Below is the code
String appKey = "b980cf5d9fcce29da2c51afe73334349696cb7c031434348e";
String column = URLEncoder.encode(":", "UTF-8");
String atsymbol = URLEncoder.encode("@", "UTF-8");
String url = "https://"+appKey+column+"X"+atsymbol+"app.listen360.com/organizations/628956/reviews.xml";
GetMethod httpget = new GetMethod(url);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new NameValuePair("per_page", "20"));
nvps.add(new NameValuePair("order", "asc"));
httpget.setQueryString(nvps.toArray(new NameValuePair[nvps.size()]));
HttpClient httpclient = new HttpClient();
try {
httpclient.executeMethod(httpget);
if (httpget.getStatusLine().getStatusCode() == 200) {
String responseJson = httpget.getResponseBodyAsString();
System.out.println(responseJson);
}
} catch (IOException e) {
//logError(e);
}
When i execute it using java code i am getting 401 unauthorized. But the same is working successfully in postman
Below is the code
String appKey = "b980cf5d9fcce29da2c51afe73334349696cb7c031434348e";
String column = URLEncoder.encode(":", "UTF-8");
String atsymbol = URLEncoder.encode("@", "UTF-8");
String url = "https://"+appKey+column+"X"+atsymbol+"app.listen360.com/organizations/628956/reviews.xml";
GetMethod httpget = new GetMethod(url);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new NameValuePair("per_page", "20"));
nvps.add(new NameValuePair("order", "asc"));
httpget.setQueryString(nvps.toArray(new NameValuePair[nvps.size()]));
HttpClient httpclient = new HttpClient();
try {
httpclient.executeMethod(httpget);
if (httpget.getStatusLine().getStatusCode() == 200) {
String responseJson = httpget.getResponseBodyAsString();
System.out.println(responseJson);
}
} catch (IOException e) {
//logError(e);
}
posted 7 months ago
The user info should contain a literal : and @, not UTF encoded ones. So your URL should simply be https://b980cf5d9fcce29da2c51afe73334349696cb7c031434348e:X@app.listen360.com/organizations/628956/reviews.xml, not the encoded https://b980cf5d9fcce29da2c51afe73334349696cb7c031434348e%3AX%40app.listen360.com/organizations/628956/reviews.xml.
So Tim, it actually does encode the : and @ (to %3A and %40 respectively); the problem is that it shouldn't in this case.
So Tim, it actually does encode the : and @ (to %3A and %40 respectively); the problem is that it shouldn't in this case.
SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6 - OCEJPAD 6
How To Ask Questions How To Answer Questions
Shameer Ammunnikutty
Greenhorn
Posts: 2
posted 7 months ago
I have tried to call the RESTAPI with out using URL Encoder and the problem is the httpget object host variable become https://app.listen.com instead of
The user info should contain a literal : and @, not UTF encoded ones. So your URL should simply be https://b980cf5d9fcce29da2c51afe73334349696cb7c031434348e:X@app.listen360.com/
The user info should contain a literal : and @, not UTF encoded ones. So your URL should simply be https://b980cf5d9fcce29da2c51afe73334349696cb7c031434348e:X@app.listen360.com/
posted 6 months ago
That would be the correct value for the host. The user info is not part of the host itself, instead it will be used as part of authentication (probably the Authorization header).
SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6 - OCEJPAD 6
How To Ask Questions How To Answer Questions

It is sorta covered in the JavaRanch Style Guide. |