HTTP Post Encoding - PullRequest
       13

HTTP Post Encoding

1 голос
/ 16 января 2012

Что я пытаюсь сделать


Здравствуйте, ребята,

Я пытаюсь создать логин для своего сервера, чтобы я мог получить доступ к данным на немнад моим приложением.Для этого я создал метод с именем 'public void doLogin(final String username, final String password)'.В этом методе я запускаю тему, в которой я публикую имя пользователя и пароль на моем сервере.Теперь проблема начинается.Когда я делаю пост, мой сервер не может обработать мой пост, который выглядит следующим образом: '"username="+username+"&password="+password'.

Чтобы попробовать, если это проблема на стороне сервера (на самом деле это не так), я сделал пост на 'curl -d' сте же параметры, и я получаю ответ без проблем.

Для вашей информации сервер работает на Ruby3

Вопрос


Как мненужно изменить мой пост на сервере, чтобы он мог обрабатывать данные, которые я отправляю.Кстати, строка, которую я публикую, должна выглядеть именно так: '"username="+username+"&password="+password //this means username=LEUSER&password=LEPASS'

Пожалуйста, скажите мне, что мне нужно изменить, некоторые фрагменты кода или учебники были бы хороши.Здесь вы найдете важные кодовые подсказки метода DoLogin

Код


public void doLogin(final String username, final String password) {

        Thread t = new Thread() {
            public void run() {

                String URL = "http://192.168.110.126:3000/sessions.json"; //für momentane testzwecke

                DefaultHttpClient client = new DefaultHttpClient();
                HttpResponse response;

                try {
                    HttpPost post = new HttpPost(URL);
                    StringEntity se = new StringEntity("username="+username+"&password="+password);
                    post.setEntity(se);

                    response = client.execute(post);

                    if (response != null) {

                    //response handling
                        handler.sendEmptyMessage(0);
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                    Log.e("DataHandler", "URLConnection-Error" + e);
                }

            }

        };
        t.start();
    }

Пожалуйста, ознакомьте меня с этим.

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Ваш код выглядит так, как будто вы отправляете HTML-форму.Фактически curl добавляет тип содержимого (со значением application/x-www-form-urlencoded) к заголовку http, если вы используете опцию -d.

Поэтому попробуйте добавить поле заголовка, например:

HttpPost post = new HttpPost(URL);
post.addHeader("Content-Type","application/x-www-form-urlencoded");
...
1 голос
/ 16 января 2012

То, что вам нужно изменить, это часть объекта String.Вам следует изменить следующее:

ArrayList<NameValuePair> requestParameters = new ArrayList<NameValuePair>();    
requestParameters.add(new BasicNameValuePair("username", username));
requestParameters.add(new BasicNameValuePair("password", password));

имя пользователя и пароль - это переменные, которые вводятся в программу.

Наконец, если вы забудете установить разрешение, оно также не будет работать.Вам необходимо установить android.permission.INTERNET

...