java - 使用异步任务将大字符串从 Android 发送到 Servlet

标签 java android servlets android-asynctask network-programming

在我的应用程序中,我通过 BasicNameValuePairs 向 Servlet 发送一个 String,这样:

        HttpClient httpClient = new DefaultHttpClient(); //127.0.0.1 - 10.201.19.153
        HttpPost httpPost = new HttpPost(conn.urls.get("now"));

        List<NameValuePair> nameValuePairs = new ArrayList<>(1);
        nameValuePairs.add(new BasicNameValuePair("order", order));//"tours"
        if(order.equals("reservation")){
            String booking = new Gson().toJson(reservation);
            nameValuePairs.add(new BasicNameValuePair("reservation", booking));
        }

        try {
            // Add name data to request
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            // Execute HTTP Post Request
            HttpResponse response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();

            //...
        } //...

除了使用 BasicNameValuePairs 之外,还有其他发送 String 的方法吗?或者这是唯一的方法?

最佳答案

我不完全知道为什么你需要一个替代品,但它是.. 除了使用 Gson,您还可以使用以下代码

{
...
    List<NameValuePair> params = new ArrayList<>();
     params.add(new BasicNameValuePair("string",longString));
     makeHttpRequest(url,"POST", params);
...
}

    public void makeHttpRequest(String url, String method, List<NameValuePair> params) {


        try {
            if (method == "POST"){
                DefaultHttpClient httpClient= new DefaultHttpClient();
                HttpPost httpPost =new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));

                HttpResponse httpResponse=httpClient.execute(httpPost);
                HttpEntity httpEntity=httpResponse.getEntity();
                is=httpEntity.getContent();

            }else if (method == "GET"){

                DefaultHttpClient httpClient=new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(params,"utf-8");
                if (!paramString.matches(""))
                {
                url +="?"+paramString;
                }
                HttpGet httpGet = new HttpGet(url);
                lru =url;

                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity=httpResponse.getEntity();
                is=httpEntity.getContent();

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

希望对你有帮助

关于java - 使用异步任务将大字符串从 Android 发送到 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31188217/

相关文章:

java - 什么在 MIDP 编程中相当于 swing-application 的 JButton?

scala - 如何获取指向同一个 servlet 的不同 URL?

java - Maven 嵌入式 Tomcat6 无法启动

java - 在 SWT 应用程序中唯一标识控件

android - Webview shouldOverrideUrlLoading 适用于以前的 android 版本,除了 4.1.x jellybean

java - android 查找复选框 id 时出现错误

android - Android 中不同的键盘布局

java - 安装tomcat和java并在浏览器中运行jsp

java - 使用 Java 进行动态图像缓存

java - 收到此错误:Server::Write Abort: java.io.WriteAbortedException: 写入中止; java.io.NotSerializedException:QueryClass