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

Android,Java:HTTP POST请求

司马祖鹤
2023-03-14
问题内容

我必须向网络服务发出http发布请求,以使用用户名和密码对用户进行身份验证。Web服务人员向我提供了以下信息,以构造HTTP Post请求。

POST /login/dologin HTTP/1.1
Host: webservice.companyname.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 48

id=username&num=password&remember=on&output=xml

我将得到的XML响应是

<?xml version="1.0" encoding="ISO-8859-1"?>
<login>
 <message><![CDATA[]]></message>
 <status><![CDATA[true]]></status>
 <Rlo><![CDATA[Username]]></Rlo>
 <Rsc><![CDATA[9L99PK1KGKSkfMbcsxvkF0S0UoldJ0SU]]></Rsc>
 <Rm><![CDATA[b59031b85bb127661105765722cd3531==AO1YjN5QDM5ITM]]></Rm>
 <Rl><![CDATA[username@company.com]]></Rl>
 <uid><![CDATA[3539145]]></uid>
 <Rmu><![CDATA[f8e8917f7964d4cc7c4c4226f060e3ea]]></Rmu>
</login>

这就是我正在做的HttpPost postRequest = new HttpPost(urlString); 我该如何构造其余参数?


问题答案:

这是之前在androidsnippets.com上找到的示例(该站点目前不再维护)。

// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");

try {
    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("id", "12345"));
    nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
    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
}

因此,你可以将参数添加为BasicNameValuePair

另一种方法是使用(Http)URLConnection。另请参见使用java.net.URLConnection触发和处理HTTP请求。实际上,这是较新的Android版本(Gingerbread +)中的首选方法。另请参见此博客,此开发人员文档和Android的HttpURLConnectionjavadoc



 类似资料:
  • 问题内容: 谁能给我指出发送GET和POST请求的一种很好的实现方式。他们有很多方法可以做到这些,我正在寻找最佳的实现方式。其次,有一种通用的方法可以发送这两种方法,而不是使用两种不同的方法。毕竟,GET方法仅在查询字符串中具有参数,而POST方法使用这些参数的标头。 谢谢。 问题答案: 您可以使用该类(在java.net中)发送POST或GET HTTP请求。它与可能要发送HTTP请求的任何其他

  • HttpURLConnection使我的应用程序崩溃,因为即使我在清单文件中使用标记,也没有授予internet权限

  • 我正在这样做: 但是请求在服务器上不起作用。。。在服务器上,我应该看到发送的数据,但我看不到它们 我也试过这个: 而且它是有效的。。。有什么问题吗?

  • javax.net.ssl.SSLHandShakeException:>java.security.cert.certPathValidatorException:未找到证书的信任锚>路径。 这条信息是什么意思?

  • 我的java代码 这是我得到的错误:08-19 09:58:35.690:W/System。err(737):SoapFault-faultcode:“SOAP-ENV:Server”faultstring:“3001:未知用户试图执行消息类型UserAuthenticationRequest。需要身份验证。”faultactor:“null”详细信息:org。kxml2.kdom。Node@40

  • 我已经安装了最新的cordova。版本是4.3.0。我创建了一个空的Cordova项目: 然后我添加平台: 我用以下方法构建了该项目: 但我总是得到: 然后,我尝试将目标android sdk更改为19,因此在AndroidManifest.xml中,我更改了: 自: 我再次运行build命令,仍然得到完全相同的错误。这快把我逼疯了。有人有什么想法吗?我在同一台PC上构建了许多许多cordova项