我正在使用域名通过我的Android应用程序调用我在谷歌应用引擎中托管的其余网络服务。但是有404找不到例外。
我们可以使用域名而不是定义远程服务器的IP地址。
答案 0 :(得分:-1)
public class LocationServerRequest {
private static final Logger LOGGER = LoggerFactory.getLogger(LocationServerRequest.class);
private static final String TAG = LocationServerRequest.class.getSimpleName();
ProgressDialog progressDialog;
public static final int CONNECTION_TIMEOUT = 1000 * 15;
private static final String JSON = ".json";
public LocationServerRequest(Context context) {
progressDialog = new ProgressDialog(context);
progressDialog.setCancelable(false);
progressDialog.setMessage("Please wait...");
}
public void fetchHolidayPackageLocationInBackground(LocationCallBackResponse locationCallBackResponse) {
progressDialog.show();
new fetchHolidayPackageLocationAsyncTask(locationCallBackResponse).execute();
}
public class fetchHolidayPackageLocationAsyncTask extends AsyncTask<Void, Void, LocationResponse> {
LocationCallBackResponse locationCallBackResponse;
public fetchHolidayPackageLocationAsyncTask(LocationCallBackResponse locationCallBackResponse) {
this.locationCallBackResponse = locationCallBackResponse;
}
@Override
protected LocationResponse doInBackground(Void... params) {
final String HOLIDAY_PACKAGE_LOCATION = ApiServerAddress.API_URL_HOLIDAY_PACKAGE + Url.AgentAPIUrls_V1.HOLIDAY_PACKAGE_LOCATION + JSON ;
LocationResponse locationResponse = null;
RestRequestWrapper restRequestWrapper = new RestRequestWrapper("toc","api",null,HOLIDAY_PACKAGE_LOCATION,"",LocationResponse.class, HTTPREQUESTMETHOD.POST);
try {
RestWebServiceCaller restWebServiceCaller = new RestWebServiceCaller();
LocationResponse response = (LocationResponse) restWebServiceCaller.processRequest(restRequestWrapper);
LOGGER.info("RESULT : "+response);
}catch (Exception e){
LOGGER.error("Something went wrong while getting response : ",e);
e.printStackTrace();
}
return locationResponse;
}
@Override
protected void onPostExecute(LocationResponse locationResponse) {
progressDialog.dismiss();
locationCallBackResponse.fetchHolidayPackageLocation(locationResponse);
super.onPostExecute(locationResponse);
}
}
}
public class RestWebServiceCaller {
private static final Logger LOGGER = LoggerFactory.getLogger(RestWebServiceCaller.class);
Object result = null;
HttpURLConnection urlConnection;
public Object processRequest(RestRequestWrapper restRequestWrapper) throws Exception {
try{
URL url = new URL(restRequestWrapper.getUrl());
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(10000);///*milliseconds*/
urlConnection.setConnectTimeout(15000);/* milliseconds */
//make some HTTP header nicety
urlConnection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
urlConnection.setRequestProperty("Host", "android.schoolportal.gr");
int responseCode = -1;
LOGGER.info("Calling --> " + restRequestWrapper.getProvider() + " :- " + restRequestWrapper.getOperation());
LOGGER.info("API URL --> " + restRequestWrapper.getUrl());
switch (restRequestWrapper.getHttprequestmethod()) {
case GET:
urlConnection.setRequestMethod("GET");
responseCode = urlConnection.getResponseCode();
break;
case POST:
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("POST");
/*DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
// 5.3 Copy Content "JSON" into
mapper.writeValue(wr, restRequestWrapper.getRequestObject());
// 5.4 Send the request
wr.flush();
// 5.5 close
wr.close();*/
if(restRequestWrapper.getRequestObject() != null){
OutputStream os = new BufferedOutputStream(urlConnection.getOutputStream());
os.write(restRequestWrapper.getRequestObject().toString().getBytes());
os.flush();//clean up
}
responseCode = urlConnection.getResponseCode();
break;
}
LOGGER.info("Response Code : " + responseCode);
LOGGER.info("Response Message : " + urlConnection.getResponseMessage());
if(responseCode == HttpURLConnection.HTTP_OK){
ObjectMapper mapper = new ObjectMapper();
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
LOGGER.info(response.toString());
result = mapper.readValue(response.toString(), restRequestWrapper.getResponseClass());
return result;
}else{
BufferedReader errorBufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getErrorStream()));
String inputLine;
StringBuffer errorResponse = new StringBuffer();
while ((inputLine = errorBufferedReader.readLine()) != null) {
errorResponse.append(inputLine);
}
errorBufferedReader.close();
LOGGER.error("Error Message from API : ",errorResponse.toString());
}
}catch(Exception ex){
LOGGER.error("Exception occurred in calling rest web service : ", ex);
} finally {
//urlConnection.disconnect();
}
return result;
}
}