2012-03-02 2 views
0

Я пытаюсь отправить вызов на удаленный сервер с учетными данными пользователя и вернуть true/false для соответствия идентификаторам лиц. Но мой код возвращает полномочия обратно ко мне в JSON лолAndroid получает неожиданный ответ от удаленного вызова сервера

 try 
     {    
      String query = String.format("login=%s&password=%s", 
        URLEncoder.encode(myEmail, charset), 
        URLEncoder.encode(myPassword, charset)); 

      final URL url = new URL(myUrl + "?" + query); 



      final HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setDoOutput(true); 
      conn.setRequestMethod("POST"); 

      conn.setRequestProperty("login", myEmail); 
      conn.setRequestProperty("password", myPassword); 

      conn.setUseCaches(false); 

      final InputStream is = conn.getInputStream(); 
      final byte[] buffer = new byte[8196]; 
      int readCount; 
      final StringBuilder builder = new StringBuilder(); 
      while ((readCount = is.read(buffer)) > -1) 
      { 
       builder.append(new String(buffer, 0, readCount)); 
      } 

      response = builder.toString();  
      Log.d("After call, response: " , " " + response); 
     } 
     catch (Exception e) 
     { 
       Log.d("Exception: " , "Yup"); 
       e.printStackTrace(); 
     } 

ли кто-нибудь знает, как я могу получить выход с сервера вместо этого материала, что я вернусь сейчас?

Спасибо!

+0

проверьте сервис в приложении Chrome Chrome Chrome. –

+0

@Sadeshkumar Periyasamy, что вы имеете в виду? Как мне это сделать? :) Благодаря! – GeekedOut

+0

Это приложение интернет-магазина Chrome для тестирования веб-сервисов отдыха. –

ответ

1

Удивительно, что код, который вы опубликовали, работает на моем автономном java-клиенте, а также в моем приложении для Android. Кажется, что-то не так на серверной части. Можете ли вы опубликовать любой дополнительный вывод с сервера?

На сервере У меня есть сервлет, который получает пользователя и пароль в формате JSON и возвращает результат проверки в формате json.

+0

сервер возвращает это: 03-07 04: 48: 46.933: D/Post execute: (1634): в методе post-execute: array (2) { 03-07 04: 48: 46.933: D/Post execute : (1634): ["login"] => 03-07 04: 48: 46.933: D/Post execute: (1634): строка (24) "alogin_string" 03-07 04: 48: 46.933: D/После выполнения: (1634): ["password"] => 03-07 04: 48: 46.933: D/Post execute: (1634): строка (7) "password" 03-07 04: 48: 46.933: D/Post execute: (1634):} – GeekedOut

+0

это печатается при вызове сервера ?? можете ли вы проверить, что возвращается сервером? – dhaval

+0

сервер просто печатает да или нет для входа в систему или нет :) – GeekedOut

1

Прежде всего, вы отправляете имя пользователя и пароль как в качестве URL-кодированных параметров http://.../?username=abc&password=test, так и в качестве заголовков HTTP-запросов. Проверьте документацию своей службы, чтобы узнать, где будут указаны имя пользователя и пароль. Может случиться так, что вы используете HTTP-аутентификацию по стандарту HTTP? Если да, взгляните на документацию на Android по адресу http://developer.android.com/reference/java/net/HttpURLConnection.html, в разделе HTTP Authentication.

PS: не забудьте отключить() ваше соединение после использования, чтобы ресурсы могли быть освобождены.

1

Другим решением было бы работать с HTTPClient возможный сценарий будет так:

HttpClient httpClient = new DefaultHttpClient(); 
HttpPost request = new HttpPost(yoururlhere); 
HttpResponse response = httpClient.execute(request); 
respondEntity = EntityUtils.toString(response.getEntity()); 

Это также будет работать с HttpGet так же, как вы хотите. Возможно, это даст вам некоторую ясность относительно того, что «действительно» происходит с сервера.

Смежные вопросы