Android POST без использования NameValuePair - PullRequest
0 голосов
/ 03 апреля 2012

как я могу опубликовать данные без использования NameValuePair?

Я хочу опубликовать строку В JS я бы использовал:

var separator = String.fromCharCode(0xef, 0xbf, 0xbf);
var postUrl = "PostUrl";
var postData = "3" + separator + "0" + separator + "13"
network.setUnicode(true);
this.reply = network.post(postUrl, postData);

Ответы [ 4 ]

2 голосов
/ 03 апреля 2012

Вот клиент HTTP , который поставляется с Android.В вашем случае вы захотите использовать StringEntity в качестве полезной нагрузки вашего запроса POST.

public void postString(URI uri, String yourDataString) throws IOException {
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(uri);
    post.setEntity(new StringEntity(yourDataString));

    client.execute(post);
}

Очевидно, вы захотите сделать более тщательную проверку на наличие ошибок.условия и тому подобное.

1 голос
/ 03 апреля 2012
    URL url;
    URLConnection urlConnection;
    DataOutputStream outStream;
    DataInputStream inStream;

    // Build request body
    String body = "3" + separator + "0" + separator + "13"

    // Create connection
    url = new URL("http://www.site.com");
    urlConnection = url.openConnection();
    ((HttpURLConnection)urlConnection).setRequestMethod("POST");
    urlConnection.setDoInput(true);
    urlConnection.setDoOutput(true);
    urlConnection.setUseCaches(false);
    urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    urlConnection.setRequestProperty("Content-Length", ""+ body.length());

    // Create I/O streams
    outStream = new DataOutputStream(urlConnection.getOutputStream());
    inStream = new DataInputStream(urlConnection.getInputStream());

    // Send request
    outStream.writeBytes(body);
    outStream.flush();
    outStream.close();

    // Get Response
    String buffer;
    while((buffer = inStream.readLine()) != null) {
        System.out.println(buffer);
    }

    // Close I/O streams
    inStream.close();
    outStream.close();
0 голосов
/ 03 апреля 2012
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("userid","123"));
                nameValuePairs.add(new BasicNameValuePair("date","2012"));
                nameValuePairs.add(new BasicNameValuePair("op","update"));
            try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost("http://www.myurl.com/action/put/newrecord");
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
            }

Я использую этот метод для публикации данных в Android / Java.Тем не менее, я думаю, что это правильный путь!

0 голосов
/ 03 апреля 2012

Создайте URL примерно так, как показано ниже. Это должно работать.

 http://www.site.com?postData=3&separator=0&anotherParam=value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...