2014-09-03 2 views
0

Я работаю над Android-приложением, которое отправляет данные на сервер (размещенный в hostinger.es - бесплатно для тестирования приложения) с помощью нового HttpPost (url); howevere, когда я запустить приложение в моем сотовом телефоне, я всегда получаю следующий ответ в моих журналах:Android httpPost (URL) -> 403 Forbidden

09-03 15:24:40.916: response: 
<html> 
<head> 
<title>Error 403 - Forbidden</title> 
<meta http-equiv="Refresh" content="0;url=http://www.hostinger.co/error_404?" /> 
</head> 
<body> 
</body> 
</html> 

Мой код сервер PHP/MySQL. Я изменил разрешения в FileZilla моих папок и файлов .php, но все равно получаю одинаковый ответ.

код моего клиента для запроса:

private static final String url = "http://yyy.esy.es/XXXX/process.php/senddata/"; 
// yyy subdomain in hostinger 
// XXXX the folder where my php files are 

protected void sendDataToServer(final TestData data) { 
    ArrayList<NameValuePair> keyValuePairs = new ArrayList<NameValuePair>(); 
    keyValuePairs.add(new KeyValuePair(Constant.FB_ID, data.getId())); 

    .... 
    ResponseHandler<String> res = new BasicResponseHandler(); 
    HttpPost postMethod = new HttpPost(url); 

    // Data that is to be sent 
    postMethod.setEntity(new UrlEncodedFormEntity(keyValuePairs)); 

    // Execute HTTP Post Request 
    String response = httpClient.execute(postMethod, res); 

Может кто-то пожалуйста, помогите мне?

Заранее спасибо

+0

Привет, если вы действительно хотите получить хорошие ответы, покажите код, который делает сообщение. Как вы хотите, чтобы люди вам помогли? –

+0

Сделано! Я просто добавил код –

+0

Используя инструменты разработчика браузера Chrome, попробуйте сделать POST на этом URL-адресе. Есть ли ошибка? – alpinescrambler

ответ

0

Спасибо за ответ. Проблема в том, что хостинг-сервер не позволяет удаленные подключения к базе данных в бесплатной учетной записи, я этого не знал. Чтобы решить эту проблему, я перешел на другой бесплатный веб-хостинг-провайдер, и теперь он работает нормально.

0

Я надеюсь, что смогу помочь вам, даже если следующая конфигурация была использована для борьбы с сертификатами. Однако я попытаюсь предоставить вам упрощенную версию с упоминанием о том, что она не проверена. Те, у кого есть сертификаты, проверены и используются, поэтому он работает
Если у вас есть какие-либо замечания, просто скажите это.

//Method for getting the http client 
protected synchronized HttpClient getHttpClient() throws Exception { 

    HttpClient client = null; 
    HttpParams params = new BasicHttpParams(); 
    HttpProtocolParams.setContentCharset(params, 
      HTTP.DEFAULT_CONTENT_CHARSET); 
    HttpConnectionParams.setConnectionTimeout(params, TIMEOUT);// (params, 
                   // TIMEOUT); 
    ConnPerRoute connPerRoute = new ConnPerRouteBean(MAX_CONN_PER_ROUTE); 
    ConnManagerParams.setMaxConnectionsPerRoute(params, connPerRoute); 
    ConnManagerParams.setMaxTotalConnections(params, 20); 
    // registers schemes for http 
    SchemeRegistry schemeRegistry = new SchemeRegistry(); 
    schemeRegistry.register(new Scheme(Protocol.HTTP.toString(), 
      PlainSocketFactory.getSocketFactory(), 80)); 
    ClientConnectionManager connManager = new ThreadSafeClientConnManager(
      params, schemeRegistry); 
    client = new DefaultHttpClient(connManager, params); 
    return client; 
} 

//methods for executing the post. contentURL is the url that you use for post. 
protected HttpEntity executePostRequest(String contentURL, StringEntity body) { 
    HttpEntity entity = null; 
    HttpPost httpPost = new HttpPost(contentURL); 

    httpPost.setEntity(body); 
    httpPost.setHeader("Content-type", "application/x-www-form-urlencoded"); 
    HttpResponse response = executeHttpPost(httpPost); 
    if (response != null) { 
     entity = response.getEntity(); 
    } 
    return entity; 
} 
private synchronized HttpResponse executeHttpPost(HttpUriRequest httpPost) { 
    Exception exception = null; 
    try { 
     HttpClient request = getHttpClient(); 
     HttpResponse response = request.execute(httpPost); 
     handleStatusCode(response); 
    } catch (Exception e) { 
     Log.e(TAG, "error in executing the post request"); 
     if (e instanceof HttpResponseException) { 
      Log.e(TAG, "HttpResponseException"); 
      if (this.HTTP_STATUS_CODE == HTTP_STATUS_UNAUTHORIZED) { 
       exception = new AuthenticationException(
         "Unauthorized Exception"); 
      } else { 
       exception = new HttpException(
         "Http not authorized Exception"); 
      } 
     } else if (this.HTTP_STATUS_CODE == HTTP_STATUS_BAD_REQUEST) { 
      Log.e(TAG, "BAD Request. error in get execute"); 
      exception = new Exception("Bad Request"); 
     } 
    } 
    if (exception != null) { 
     Log.e(TAG, "Exception." + exception.getMessage()); 
    } 
    return null; 
} 
0

Может быть, вы можете разместить JSON стиль, и посмотреть, что происходит? Например:

protected void sendDataToServer(final TestData data) { throws Exception 
{ 

    Map<String,String> params = new HashMap<String, String>(); 
    params.put(Constant.FB_ID, data.getId()); // both strings??? 


DefaultHttpClient httpclient = new DefaultHttpClient(); 


HttpPost httpost = new HttpPost(url); 

//convert the passed in parameters into JSON object 
JSONObject holder = getJsonObjectFromMap(params); 


StringEntity se = new StringEntity(holder.toString()); 


httpost.setEntity(se); 

httpost.setHeader("Accept", "application/json"); 
httpost.setHeader("Content-type", "application/json"); 


ResponseHandler responseHandler = new BasicResponseHandler(); 
httpclient.execute(httpost, responseHandler); 
}