Как вызвать веб-службу Restful в Android

кто-нибудь поможет мне, как отправить данные аутентификации POST в веб-службу для отдыха и получить от нее ответ. Я должен опубликовать имя пользователя, IsAuthenticated (т.е. true или false), пароль. Также объясните метод кодирования URL. Я показал свой код ниже. Я новичок в Android.

public class LoginActivity extends Activity
{
    String Username;
    String Password;
    String IsAuthenticated;
    String answer;

    @Override
     public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
            try {
                POST(Username,Password,IsAuthenticated);
            } catch (Exception e) {
                e.printStackTrace();
            }
      }


     public String POST(String Username, String IsAuthenticated, String Password) {
         String Returned = null;
          HttpClient httpclient = new DefaultHttpClient();
          HttpPost httppost = new HttpPost("http://......./Authenticate");

          try {
             List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
             // Your DATA
             nameValuePairs.add(new BasicNameValuePair("UserName", "Username"));
             nameValuePairs.add(new BasicNameValuePair("IsAuthenticated", "false"));
             nameValuePairs.add(new BasicNameValuePair("Password", "Password"));

             httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
             HttpResponse response = httpclient.execute(httppost);
             HttpEntity resEntity = response.getEntity();
             Returned = EntityUtils.toString(resEntity);

            System.out.println(Returned);
             Toast.makeText(this, Returned, Toast.LENGTH_LONG).show();
          } catch (ClientProtocolException e) {
             Toast.makeText(this, "There was an issue Try again later", Toast.LENGTH_LONG).show();
          } catch (IOException e) {
             Toast.makeText(this, "There was an IO issue Try again later", Toast.LENGTH_LONG).show();
             e.printStackTrace();
          }

          return Returned;
       }
}

person Dray    schedule 16.02.2011    source источник
comment
Ваш метод POST выглядит нормально. Вы получаете какие-либо ошибки? Однако сетевую активность следует выполнять в отдельном потоке. См. упрощенную многопоточность и AsyncTask .   -  person Anuj    schedule 17.02.2011
comment
Привет, василиск, у меня проблемы с кодированием моих параметров входа в систему с URL-адресом. Если я преодолею tat, я получу вывод. какие-либо предложения???   -  person Dray    schedule 17.02.2011
comment
Я сам использовал httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)) без указания кодировки, и у меня вроде все нормально работало. Пробовали без кодировки?   -  person Anuj    schedule 17.02.2011
comment
да я пробовал тэт. но безрезультатно. Я получаю доступ к xml-сервису. Как мне отправить параметры для публикации. Нужна ли здесь сериализация? застрял здесь на 10 дней, избавь меня от этой проблемы   -  person Dray    schedule 18.02.2011
comment
Вам нужно установить XML тела POST вместо отправки значений в виде пар имя-значение. Формат XML будет зависеть от службы, в которой вы выполняете аутентификацию.   -  person Abhinav    schedule 28.03.2011
comment
да, я отправил XML-код тела POST и завершил задачу. Спасибо, Абхинав.   -  person Dray    schedule 02.04.2011


Ответы (1)


И я наконец получил ответ, и он отлично работает для меня... Я разместил рабочий код ниже.

    public class LoginActivity extends Activity
{
    String Returned;
    @Override
     public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);

          try {
              HttpClient httpclient = new DefaultHttpClient();
              HttpPost post = new HttpPost("http://Your url here/");
              StringEntity str = new StringEntity("Your xml code");
              str.setContentType("application/xml; charset=utf-8");
              str.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/xml; charset=utf-8"));
              post.setEntity(str);
              HttpResponse response = httpclient.execute(post);
              HttpEntity entity = response.getEntity();
              Returned = EntityUtils.toString(entity);
              Toast.makeText(this, Returned, Toast.LENGTH_LONG).show();
            } catch ( IOException ioe ) {
             ioe.printStackTrace();
            }
          }
}

большое спасибо за все ваши ответы.

person Dray    schedule 23.08.2011