Android http пост с параметром - PullRequest
0 голосов
/ 06 июля 2010

Я хочу отправить данные на сервер с клиента (Android), ниже указан мой формат

http://101.34.45.45/rawData?data={"userId":"guest1","timestamp":"2010-07-01 08:58:23","wifi":[{"ssid":"guest","rssi":"40"},{"ssid":"guest1","rssi":"80"}]}, 

Я пробую серию проб, но безрезультатно, как это можно сделать?

Ответы [ 2 ]

0 голосов
/ 15 июля 2012

Используемая библиотека: http://loopj.com/android-async-http/

private OnClickListener login = new OnClickListener() {

public void onClick(View view) {

    AsyncHttpClient myClient = new AsyncHttpClient();
    myClient.get(URL, null);
    myClient.setCookieStore(myCookieStore);
    myClient.setCookieStore(myCookieStore);
    String username = "";
    String password = "";
    RequestParams params1 = new RequestParams();
    params1.put("username", username);
    params1.put("password", password);
    pd = ProgressDialog.show(this, "", "Signing In...");
    myClient.post(URL, params1,
            new AsyncHttpResponseHandler() {
                @Override
                public void onSuccess(String response) {
                    System.out.println("response" + response);
                    pd.dismiss();
                    if (response.contains("<!--Authorized-->")) {
                    }
                    else {
                        pd.dismiss();
                        Context mContext = SigninActivity.this;
                        notMatchDialog = new Dialog(mContext);
                        notMatchDialog.setContentView(R.layout.loginfaileddialoglayout);
                        notMatchDialog.setTitle("Login failed");
                        dismissDialogButton = (Button) notMatchDialog.findViewById(R.id.dismissDialogButton);
                        dismissDialogButton.setOnClickListener(dismissDialog);
                        notMatchDialog.show();
                    }
                }

                @Override
                public void onFailure(Throwable e, String response) {
                    // TODO Need to figure out different failures and try to help the user.
                }
            });
}
};
0 голосов
/ 06 июля 2010

Без вашего кода трудно оценить, правильно ли вы проходите этот процесс, но, основываясь на том, что вы нам дали, вы неправильно кодируете данные. Вам нужно будет URL кодировать данные перед добавлением в URL. Чтобы сделать это в Java, используйте URLEncoder класс (см. Javadoc для этого класса здесь) .

Чтобы сделать это с вашим кодом, это будет выглядеть примерно так:

String url = "http://101.34.45.45/rawData?data=";
String params = URLEncoder.encode("{\"userId\":\"guest1\",\"timestamp\":\"2010-07-01 08:58:23\",\"wifi\":[{\"ssid\":\"guest\",\"rssi\":\"40\"},{\"ssid\":\"guest1\",\"rssi\":\"80\"}]}",  "UTF-8");
url = url+params;
//do the HTTP operation

* Обратите внимание, для полноты, W3C и адвокат Javadoc не используют UTF-8. Я использовал его здесь просто для генерации примера кода.

Если это не решит вашу проблему, пожалуйста, опубликуйте свой код, чтобы мы могли видеть, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...