2011-07-21 69 views
0

我想在java中为android发送POST请求。http对android的发布请求

我用这个代码:

HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("myUrl"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("artist", "Amy Macdonald")); 
     nameValuePairs.add(new BasicNameValuePair("title", "Don't Tell Me That It's Over")); 
     nameValuePairs.add(new BasicNameValuePair("album", "Don't Tell Me That It's Over")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httppost); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 

的问题是,当我使用:

HttpResponse response = httpclient.execute(httppost); 

我得到一个异常,而这个web服务的工作是肯定的,

回答

0

你发布什么方案? http还是https?您是否已使用ClientConnectionManagerHttpParams正确设置客户端?你在日志中遇到什么异常?

我一些代码,我有张贴数据之间看到的唯一区别(假设你的客户是否设置正确)是,我使用的HttpContext的执行方法是这样的:

httpPost = new HttpPost(urlString); 
httpPost.setEntity(new UrlEncodedFormEntity(nvps)); 
response = httpClient.execute(httpPost, httpContext); 
statusCode = response.getStatusLine().getStatusCode(); 

文意是建立在与

httpContext = new BasicHttpContext(); 
httpContext.setAttribute(ClientContext.COOKIE_STORE, new BasicCookieStore()); 

如果您使用的是HTTPS的构造函数,你需要安装客户端,与更多的信息,以便它可以处理密钥存储要求和连接等安全方面。

0

Javadoc状态:

用作HTTP消息元素的名称/值对参数。

parameter    = attribute "=" value 
attribute    = token 
value     = token | quoted-string 

由于HTTP POST不追加属性的URL(每说),它做它实体主体形式。你可以有一个简单的基于字符串的实体或基于MIME的实体主体。

NameValuePair已经实现了一个名为BasicNameValuePair的类(您可以想象它使用HTTP参数)提供了一个参数和一个值。