将名称值对发送到服务器的最佳方法是什么?

时间:2012-02-23 15:58:31

标签: android server client

我已经在两个星期的最佳时间里尝试了这个,而且我真的被卡住了。最初我创建了一个简单的ObjectOutputStream客户端 - 服务器程序 - 客户端是Android应用程序,但它不起作用(它读取连接而不是对象)。

所以现在我很困惑我可以采取哪些其他方法来执行这个简单的任务?任何人都可以帮忙吗?

4 个答案:

答案 0 :(得分:0)

您是否尝试使用post方法进行URLConnection? :)

或者获取方法:

String yourURL = "www.yourwebserver.com?value1=one&value2=two";
URL url = new URL(yourURL);
URLConnection connection = url.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
response = in.readLine();

答案 1 :(得分:0)

您可以尝试使用JSON字符串来发送数据。我们有很多关于如何使用JSON的东西,还有很多api。 JSON Simple是我能建议的。它真的很容易。

答案 2 :(得分:0)

你为什么不试试这个:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();

答案 3 :(得分:0)

您可以使用此功能将实体发布到服务器:

    HttpClient httpClient = new DefaultHttpClient();
    HttpPost postRequest = new HttpPost(url);
    postRequest.setEntity(entity);
    try {

        HttpResponse response = httpClient.execute(postRequest
                );
        String jsonString = EntityUtils.toString(response
                .getEntity());
        Log.v(ProgramConstants.TAG, "after uploading file "
                + jsonString);
        return jsonString;

    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

实体可以是名称值对:

List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("key1", value1));
nvps.add(new BasicNameValuePair("key2", value2));
Entity entity=new UrlEncodedFormEntity(nvps, HTTP.UTF_8)  

或者您可以使用bytearray发送实体。

Bitmap bitmapOrg=getBitmapResource();
ByteArrayOutputStream bao = new ByteArrayOutputStream();
bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao);

byte[] data = bao.toByteArray();

MultipartEntity entity=new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE)
entity.addPart("file", new ByteArrayBody(data, "image/jpeg",
                        "file"));

如果要将json发布到服务器:
请查看此链接How do I send JSon as BODY In a POST request to server from an Android application?
为了序列化和反序列化java对象,我建议https://sites.google.com/site/gson/gson-user-guide#TOC-Using-Gson 真的希望它可以帮助您查看向服务器发送数据的概述