2015-12-29 5 views
0

В моем Android-проекте я хочу хранить данные о человеке. Базовый, после заполнения формы формы лица, при нажатии введите, он будет подключаться к серверу и хранить данные сервера.android http request, дающий пустое исключение

Итак, у меня есть:

private void serverSignup(final Person suf) { 
     new AsyncTask<Person, Void, String>() { 
      @Override 
      protected String doInBackground(Person... params) { 
       String serverResponse = ""; 

    try { 
     serverResponse = mServerAuth.userSignup(suf.getName(), 
      suf.getCountry(),suf.getDate(), suf.getEmail()); 

      } catch (Exception e) { 
      Log.e("ErrorMessage", TAG + " > Signup access server error: " + 
      e.getMessage()); **I am getting this section as null 

      } 
       return serverResponse; 
      } 

      @Override 
      protected void onPostExecute(String serverResponse) { 
      finish(); 

      } 
     }.execute(); 
    } 

и mServerAuth код:

public String userSignup(String name, String country, 
String date, String email) throws Exception { 

      String url = "http://localhost:8080/SpringMVCHibernate/person/add"; 
      Person suf = new Person(name, country, date, email); 
      List<NameValuePair> pairs = new ArrayList<NameValuePair>(1); 
      pairs.add(new BasicNameValuePair("suf", new Gson().toJson(suf))); 

      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpEntity requestEntity = new UrlEncodedFormEntity(pairs); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(requestEntity); 


      try { 

      HttpResponse response = httpClient.execute(httpPost); 
      HttpEntity entity = response.getEntity(); 

      } catch (IOException ioe) { 

      Log.e("Error", TAG + " > 
      IOEException during the POST response: " + ioe.getMessage()); 
      } 

      return null; 
     }} 

Для доступа этого кода я получаю сообщение об ошибке:

Signup access server error:нуля почему значение равно null? Не подключается ли сервер к серверу?

+0

ли вы добавить нужное разрешение в вашем Manifest.xml – FrancescoAzzola

+0

Да, я добавил .. – Preeti

+0

@Preeti: использовать HttpURLConnection для запроса веб-сервиса. – kevz

ответ

1

Ну, не используйте устаревшую apis в Android. Ниже приведен код с использованием HTTPUrlConnection api. Надеюсь, что это поможет выполнить ур.

new AsyncTask < Person, Void, String >() { 

String LOGIN_URL = "http://localhost:8080/SpringMVCHibernate/person/add"; 
HttpURLConnection conn; 
DataOutputStream wr; 
String responseCode = "-1"; 
URL url; 

@Override 
protected String doInBackground(String...params) { 

    try { 

     url = new URL(LOGIN_URL); 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setDoOutput(true); 
     conn.setRequestMethod("POST"); 
     conn.connect(); 


     Person suf = new Person(name, country, date, email); 
     String strSuf = new Gson().toJson(suf); 

     wr = new DataOutputStream(conn.getOutputStream()); 
     wr.writeBytes(strSuf); 
     wr.close(); 

     responseCode = conn.getResponseCode(); 

     return responseCode; 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally() { 
     conn.disconnect(); 
    } 

    return responseCode; 
} 

@Override 
protected void onPostExecute(String responseCode) { 

    if (!responseCode.equals("-1")) 
     Toast.makeText(mContext, "Stored data successfully", Toast.LENGTH_LONG).show(); 
    else 
     Toast.makeText(mContext, "failed to store data", Toast.LENGTH_LONG).show(); 
} 

}.execute(); 
+0

@Preeti: Check ответ с использованием HTTPUrlConnection. – kevz

-1

Ищете документацию, и я вижу, что нет метода DefaultHttpClient.execute(HttpPost). Вы должны использовать HttpUrlConnection для сетевого запроса, это новое. DefaultHttpClient устарел.

0

От HttpEntity entity = response.getEntity(); ваш объект объекта, но вы не читаете данные, просто вы возвращаете нуль.

Вы должны получить ответ, как этот

HttpResponse httpresponse = httpclient.execute(httppost); 
String response=EntityUtils.toString(httpresponse.getEntity()); 

Затем вам нужно вернуть «ответ» строку.

В то же время проверьте URL-адрес и его работу или нет?

+0

Я тоже это сделал, но все равно такая же ошибка .. В моей связи я использую Интернет из Wi-Fi, я подключаю свой компьютер через «usb teathering» .. В локальном хосте I Put IP адрес компьютера .. – Preeti