当前位置: 首页 > 面试题库 >

在带有post参数的Android中使用HttpClient和HttpPost

井镜
2023-03-14
问题内容

我正在为应该获取数据的Androidhtml" target="_blank">应用程序编写代码,将其打包为Json并将其发布到Web服务器,而该Web服务器又应该以json进行响应。

使用GET请求可以很好地工作,但是由于某种原因使用POST,所有数据似乎都被剥夺了,服务器什么也没收到。

这是一段代码:

HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000);        
DefaultHttpClient httpClient = new DefaultHttpClient(params);
BasicCookieStore cookieStore = new BasicCookieStore();
httpClient.setCookieStore(cookieStore);

String uri = JSON_ADDRESS;
String result = "";
String username = "user";
String apikey = "something";
String contentType = "application/json";

JSONObject jsonObj = new JSONObject();

try {
    jsonObj.put("username", username);
    jsonObj.put("apikey", apikey);
} catch (JSONException e) {
    Log.e(TAG, "JSONException: " + e);
}

HttpPost httpPost = new HttpPost(uri);
List<NameValuePair> postParams = new ArrayList<NameValuePair>();
postParams.add(new BasicNameValuePair("json", jsonObj.toString()));
HttpGet httpGet = null;
try {
    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParams);
    entity.setContentEncoding(HTTP.UTF_8);
    entity.setContentType("application/json");
    httpPost.setEntity(entity);

    httpPost.setHeader("Content-Type", contentType);
    httpPost.setHeader("Accept", contentType);
} catch (UnsupportedEncodingException e) {
    Log.e(TAG, "UnsupportedEncodingException: " + e);
}

try {
    HttpResponse httpResponse = httpClient.execute(httpPost);
    HttpEntity httpEntity = httpResponse.getEntity();

    if (httpEntity != null) {
        InputStream is = httpEntity.getContent();
        result = StringUtils.convertStreamToString(is);
        Log.i(TAG, "Result: " + result);
    }
} catch (ClientProtocolException e) {
    Log.e(TAG, "ClientProtocolException: " + e);
} catch (IOException e) {
    Log.e(TAG, "IOException: " + e);
}

return result;

我想我已经遵循了有关如何创建和发布参数的一般准则,但是显然没有。

在这一点上(在花了几个小时才意识到从未发送过任何帖子数据之后),非常欢迎能找到解决方案的任何帮助或指针。真正的服务器在Tomcat上运行Wicket,但我也在一个简单的PHP页面上对其进行了测试,没有任何区别。


问题答案:

您是否尝试过不使用JSON对象并仅传递两个basicnamevaluepairs?另外,这可能与您的服务器设置有关

更新:这是我使用的一段代码:

InputStream is = null;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("lastupdate", lastupdate));

try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(connection);
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
        Log.d("HTTP", "HTTP: OK");
    } catch (Exception e) {
        Log.e("HTTP", "Error in http connection " + e.toString());
    }


 类似资料:
  • 问题内容: 我需要将POST请求发送到包含gzip压缩请求参数的Web服务器。我使用的是Apache HttpClient,我已经读到它支持开箱即用的Gzip,但是我找不到任何有关如何做我需要的示例。如果有人可以发布一些示例,我将不胜感激。 问题答案: 您需要先将其转换为gzip 或(临时)。我们假设它不是一个很大的值,所以对于可用的JVM内存足够安全: 然后,可以使用HttpClient将其作为

  • 我是第一次用阿拉莫火。我使用的是最新版本的Alamofire 1.3.1。我想在一个API调用中发送一个图像,一个视频和一些POST参数。我正在使用多部分表单数据。多部分模块正在工作。我面临的问题是发送额外的POST参数。下面是我的代码。“params”是包含额外参数的字典?如何在请求中追加这些POST参数。请帮忙

  • 嗨,我为tictactoe游戏编写了这个示例代码,除了checkWinner函数之外,其他都正常工作,它接受两个参数ArrayList和currentPlayer来检查胜利者。该函数在每个玩家在tictactoe游戏中查看获胜的点击单元格后调用。我不知道错误在哪里!事先谢谢你

  • 单击from-data或x-www-form-urlencoded 然后在键/值字段上传递两个参数。 ANDROID改装设置 原因是我使用了2个API(webapi和wcf)。我的所有其他响应都是对象数组。[{},{}]但在此呼叫中,我收到了以下信息 但我还是无法解析响应。

  • 问题内容: 我试图弄清楚如何通过使用HTTPClient从Android发布JSON。我试图解决这一问题已有一段时间,我在网上找到了很多示例,但我无法使用其中的任何示例。我认为这是因为我总体上缺乏JSON /网络知识。我知道那里有很多示例,但是有人可以指出我的实际教程吗?我正在寻找包含代码的逐步过程,并解释为什么您执行每个步骤或该步骤执行的操作。不需要很复杂,简单就足够了。 再说一次,我知道那里有

  • 我们公司有一个基于.NET的网站 几天前,我们向网站程序员请求一个webservice。昨天他给了我一个URL 当我从localhost打开URL时,它显示了一个页面,我可以从我们请求编程的四个方法(函数)中选择一个。 通过选择其中一个,一个新的页面显示如下: SOAP 1.1 以下是SOAP 1.1请求和响应示例。显示的占位符需要用实际值替换。 POST/webservices/findstat