下面是post的:
public class Test extends Activity implements OnClickListener {
public Context context;
private TextView textView1;
public static String URL ="http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
private DefaultHttpClient httpClient;
private static final int TIMEOUT = 60;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
try {
HttpParams paramsw = createHttpParams();
httpClient = new DefaultHttpClient(paramsw);
/* 建立HTTP Post连线 */
HttpPost post = new HttpPost("http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl");
// URI uri = new URI(URL);
// HttpPost post = new HttpPost();
// post.setURI(uri);
// Post运作传送变数必须用NameValuePair[]阵列储存
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", "this is post"));
// params.add(new BasicNameValuePair("version", getVersionCode(context) + ""));
// params.add(new BasicNameValuePair("os", "android"));
// params.add(new BasicNameValuePair("flag", "10"));
// params.add(new BasicNameValuePair("modle", getModelNumber()));
// params.add(new BasicNameValuePair("channel", "samsung"));
try {
// 发出HTTP request,把字符集设置在request里面
post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
//相当于打开链接,给出回应
HttpResponse httpResponse = httpClient.execute(post);
int httpCode = httpResponse.getStatusLine().getStatusCode();
//HTTP_OK=200,服务器作出反映,找到了服务器,并且回应了。
if (httpCode == HttpURLConnection.HTTP_OK) {
// //取出回应字串
// String strResult=EntityUtils.toString(httpResponse.getEntity());
// textView1.setText(strResult);
//这里可以做很多事
Header[] headers=httpResponse.getAllHeaders();
HttpEntity entity=httpResponse.getEntity();
Header header=httpResponse.getFirstHeader("content-type");
//下面是从流中把字符串读出来了
InputStream inputStream=entity.getContent();
InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader);//读字符串用的。
String inputLine = null;
String result = "";
// 使用循环来读取获得的数据,把数据都村到result中了
while (((inputLine = reader.readLine()) != null)) {
// 我们在每一行后面加上一个"\n"来换行
result += inputLine + "\n";
}
reader.close();//关闭输入流
}else {
textView1.setText("Error Response"+httpResponse.getStatusLine().toString());
}
} catch (UnsupportedEncodingException e) {
textView1.setText("网络连接错误UnsupportedEncodingException");
} catch (ClientProtocolException e) {
textView1.setText("网络连接错误ClientProtocolException");
} catch (IOException e) {
textView1.setText("网络连接错误IOException");
}
} finally {
if (httpClient != null) {
httpClient.getConnectionManager().shutdown();//最后关掉链接。
httpClient = null;
}
}
}
/**
* 手机型号
*
* @return
*/
private String getModelNumber() {
String modelNo = "Unknown";
try {
modelNo = Build.MODEL;
} catch (Exception e) {
// ignored
}
return modelNo;
}
/**
* 获得版本CODE
*
* @param context
* @return
*/
public static int getVersionCode(Context context) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo info = pm.getPackageInfo(context.getPackageName(), 0);
if (info != null) {
return info.versionCode;
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return 1;
}
/**
* Create the default HTTP protocol parameters.
*/
public static final HttpParams createHttpParams() {
final HttpParams params = new BasicHttpParams();
// Turn off stale checking. Our connections break all the time anyway,
// and it's not worth it to pay the penalty of checking every time.
HttpConnectionParams.setStaleCheckingEnabled(params, false);
//设置链接超时,socket超时,以及socket大小。
HttpConnectionParams.setConnectionTimeout(params, TIMEOUT * 1000);
HttpConnectionParams.setSoTimeout(params, TIMEOUT * 1000);
HttpConnectionParams.setSocketBufferSize(params, 8192 * 5);
return params;
}
private void init() {
// TODO Auto-generated method stub
textView1 = (TextView) findViewById(R.id.txt);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
Button button3 = (Button) findViewById(R.id.button3);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
}
分享到:
相关推荐
- **读取响应数据**:读取服务器返回的数据并处理。 - **异常处理**:处理可能出现的异常情况。 #### 四、总结 通过以上分析,我们可以了解到 POST 请求的基本流程和实现方式。在实际开发过程中,根据业务需求选择...
服务器端需要解析POST请求发送的参数,然后根据业务逻辑处理数据,并将结果封装为JSON格式返回给客户端。 在Android客户端接收到服务器返回的JSON数据后,需要使用JSON解析库(如org.json库或第三方库如Gson)来...
3. **构建POST请求并发送JSON数据** 4. **解析返回的JSON数据** ### 1. 理解HTTP请求与响应的基础概念 HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,是互联网应用的基础之一。在客户端...
在IT行业中,网络通信是不可或缺的一部分,而HTTP协议作为互联网上最广泛使用的应用层协议,其POST方法在数据传输中占据着核心地位。本篇将深入探讨如何在Java环境中实现HTTPS POST请求,以及相关源码解析。我们通过...
本示例"导入Excel读取数据的小例子"展示了如何在Java Web环境中实现这个功能。 首先,我们需要理解的是文件上传的概念。在Web应用中,文件上传允许用户从本地计算机选择文件并将其发送到服务器进行处理。这通常涉及...
与GET方法不同,POST方法不会将数据包含在URL中,而是将数据封装在请求体中,因此可以传输更大的数据量和敏感信息。本篇文章将深入探讨如何在Java中使用POST方法进行数据传输。 首先,要实现POST请求,我们需要使用...
在这个场景中,我们关注的是如何使用HttpClient来发送POST请求并传输JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于API接口的数据传递。 首先,我们需要引入Apache HttpClient...
2. 请求读取:Apache接收并解析HTTP请求,包括请求行、头和数据。 3. 找到表示形式:根据请求的URL,Apache查找对应的资源,并决定如何处理。 4. 条件请求评估:支持HTTP的条件请求,如If-Match、If-None-Match等,...
在给定的代码片段中,主要展示了如何使用Java中的Apache HttpClient库发送一个包含XML数据的POST请求,并接收响应。下面是对关键部分的详细分析: 1. **导入必要的库**:代码首先导入了处理网络请求、输入输出流...
在实际应用中,开发者可以根据具体需求对HttpClient进行细致的配置和定制,使其更好地适应不同的网络环境和安全要求。HttpClient 4.2.5是一个强大而灵活的工具,对于Java开发者来说,它是构建HTTP通信功能不可或缺的...
HttpClient库使得开发者能够轻松地实现网络数据的抓取和交换,这对于进行Web服务交互、网页爬虫或者任何需要从互联网获取数据的应用来说都非常有用。 ### GET请求 GET请求是最常见的HTTP方法,用于从服务器上获取...
2. **连接管理**:支持连接池,可以高效地复用TCP连接,减少网络延迟。 3. **请求和响应处理**:包括设置请求头、添加请求参数、解析响应头和响应体。 4. **身份验证和安全**:支持多种认证机制,如Basic Auth、...
- **EntityUtils**:用于读取和处理响应体内容,支持各种数据格式,如文本、XML、JSON等。 7. **Redirect处理**: - **RedirectStrategy**:定义了如何处理重定向,可以自定义策略。 8. **多部分表单数据**: -...
这个库在许多Java应用程序中被广泛使用,特别是在需要进行网络通信和数据交换的场景下。`org.apache.commons.httpclient`是该库的核心包,包含了执行HTTP请求、处理响应以及管理连接等所有必要的组件。 在HTTP...
在标题提到的`httpcomponents-client-4.2.5-bin.tar`中,我们找到了Apache HttpClient的特定版本4.2.5的二进制分发包,它通常包含了一系列的JAR文件,用于支持网络爬虫和其他需要与HTTP服务器交互的应用程序。...
4. **读取响应内容**:从`HttpResponse`的`Entity`中获取输入流,逐块读取数据并写入到输出流。 5. **关闭流**:完成下载后,确保关闭所有流。 ### 文件上传 文件上传通常涉及Multipart/form-data格式,可以使用`...
7. **最新的内容**:如果需要确保读取到最新的数据库内容,可能需要在每次读取前关闭所有未完成的事务,或者在连接打开后立即执行`SELECT`语句,以避免读取到旧的数据快照。 8. **项目结构**:压缩包子文件列表中...
- **ap_read_request**和**ap_process_request**:读取请求数据,进行请求处理,包括请求解析、安全检查和实际处理三个阶段。 6. **请求解析阶段**: - **URL字符转义**:不是所有请求都需要此步骤,主要用于代理...
POST请求可以携带大量数据,且数据不会显示在浏览器的URL栏中,增加了数据的安全性。 2. **Cookie机制**:Cookie是服务器在用户浏览器上设置的一小段文本数据,用于跟踪用户的会话、存储用户设置等。每个cookie包含...
这通常涉及到设置输入流并读取服务器返回的数据。 5. **解析JSON**:接收到的响应通常是JSON格式的字符串,使用JSON库将其解析成Java对象,便于后续处理。 6. **关闭连接**:完成操作后,记得关闭连接以释放资源。...