我们可以在android中使用域名而不是ip地址

时间:2016-04-20 12:53:53

标签: android

我正在使用域名通过我的Android应用程序调用我在谷歌应用引擎中托管的其余网络服务。但是有404找不到例外。

我们可以使用域名而不是定义远程服务器的IP地址。

1 个答案:

答案 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;
}
}