`

连接服务器超时的Demo

阅读更多
下面这个例子是连接网络超时的例子:
package cn.com;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class TimeOutTest extends Activity implements OnClickListener {
	// 主,子线程之间的通讯handler
	private Handler handler = new Handler() {
	};
	private static final int SYNC_DIALOG = 0;
	private final static String HOST = "***.***.***.***";
	private final static int PORT = 8080;
	private final static String HOST_IP = "http://" + HOST + ":" + PORT;
	private final static String loginURL = HOST_IP + "******";
	private ProgressDialog myDialog;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button load = (Button) findViewById(R.id.load);
		load.setOnClickListener(this);
	}

	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case SYNC_DIALOG:
			myDialog = new ProgressDialog(TimeOutTest.this);
			// progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
			myDialog.setMessage(getResources().getString(R.string.loginData));
			return myDialog;
		default:
			return null;
		}
	}

	@Override
	public void onClick(View v) {
		// 显示Progress对话框
		showDialog(SYNC_DIALOG);
		//新起一个线程进行下载
		new Thread(new Runnable() {
			public void run() {
				// TODO Auto-generated method stub
				try {
					//设置连接超时
					HttpParams httpParameters = new BasicHttpParams();
					int timeoutConnection = 3000;
					HttpConnectionParams.setConnectionTimeout(httpParameters,
							timeoutConnection);
					DefaultHttpClient httpclient = new DefaultHttpClient(
							httpParameters);

					HttpPost httpost = new HttpPost(loginURL);
					List<NameValuePair> nvps = new ArrayList<NameValuePair>();
					nvps.add(new BasicNameValuePair("username", "go"));
					nvps.add(new BasicNameValuePair("password", "go"));
					httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

					HttpResponse response;
					// This is always a final response
					response = httpclient.execute(httpost);

					HttpEntity entity = response.getEntity();
					InputStream is = entity.getContent();
					ConvertStreamToString(is);

				} catch (ClientProtocolException e) {
					System.out
							.println("_________ClientProtocolException_________");
				} catch (UnsupportedEncodingException e) {
					System.out
							.println("_________UnsupportedEncodingException_________");
				} catch (IOException e) {
					System.out.println("_________IOException_________");
					dismissDialog(SYNC_DIALOG);
				}
			}
		}).start();

	}

	//读取字符流
	public String ConvertStreamToString(InputStream is) {
		StringBuffer sb = new StringBuffer();
		BufferedReader br = new BufferedReader(new InputStreamReader(is));
		String data = "";
		try {
			while ((data = br.readLine()) != null) {
				sb.append(data);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		final String result = sb.toString();
		handler.post(new Runnable() {
			public void run() {
				Toast.makeText(TimeOutTest.this, result, Toast.LENGTH_LONG)
						.show();
			}
		});

		System.out.println("result ===============" + result);
		return result;
	}

}

习惯了的权限
<uses-permission android:name="android.permission.INTERNET" />
分享到:
评论

相关推荐

    android Http Post 连接服务器超时Demo

    //设置连接超时 HttpParams httpParameters = new BasicHttpParams(); int timeoutConnection = 3000; HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); ...

    java使用JSCH进行连接远程服务器Demo

    下面我们将深入探讨如何使用JSCH进行远程服务器连接,并通过DEMO来学习这一过程。 首先,你需要在项目中引入JSCH库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.jcraft&lt;/groupId&gt;...

    C语言长连接服务器Demo(epoll非阻塞)

    通过学习和理解这个C语言的长连接服务器Demo,开发者可以更好地掌握网络编程技术,尤其是如何在高并发场景下构建高效的服务器。这不仅对C语言程序员,对任何从事服务器端开发的工程师都是宝贵的实践经验。

    TCP长短连接简单Demo

    例如,长连接可能会遇到连接超时、半开连接等问题,需要设置合理的超时机制和重连策略。短连接则需要注意避免过多的连接创建和释放,可能引入的系统资源消耗。 通过这个C++ Demo,开发者不仅可以学习到TCP连接的...

    android客户端与后台服务器交互demo

    客户端需要捕获并处理网络错误,如超时、无网络连接或服务器返回的错误代码。同时,服务器也需要返回清晰的错误信息,帮助客户端理解问题所在。 通过这个“android客户端与后台服务器交互demo”,开发者可以学习到...

    socket长连接 demo

    2. **超时设置**:当服务器在一定时间内未收到心跳回应,需要设定一个合理的超时阈值,决定何时断开连接。 3. **异常处理**:在网络通信中,需要处理各种可能的异常情况,如连接突然断开、数据传输错误等。 4. **...

    android连接服务器实现登录的demo

    本示例"android连接服务器实现登录的demo"演示了如何在Android客户端与基于JSP、Servlet、Tomcat服务器以及MySQL数据库的后端系统进行通信,以实现用户登录验证。这个流程涉及多个关键知识点,下面将详细阐述。 1. ...

    Socket长连接demo

    在"Socket长连接demo"这个项目中,可能包含了上述步骤的代码实现,用于教学或演示如何在实际开发中运用Socket长连接。通过阅读和理解这个示例,开发者可以学习到如何在Python、Java或其他支持Socket编程的语言中,...

    手机android连接服务器的图书馆Demo

    在这个"手机android连接服务器的图书馆Demo"中,我们可能会使用HttpURLConnection或者现代的Retrofit库,因为它们更加高效且易于使用。使用这些工具,Android应用可以构建HTTP请求,设置请求头(例如Content-Type为...

    java连接mysql数据库连接池demo

    使用连接池,开发者需要配置连接池的参数,如最大连接数、最小连接数、超时时间等。 4. **数据库连接配置**: 连接MySQL数据库时,需要提供以下信息: - 数据库URL:通常格式为`jdbc:mysql://hostname:port/...

    Android 客户端与服务器端进行数据交互Demo(包含服务器端和客户端)

    9. **错误处理**: 客户端需要处理各种可能出现的网络错误,如超时、无网络连接、服务器错误等,通常会通过回调或监听器返回错误信息。 10. **模拟服务器交互**: 开发阶段,开发者可能会使用工具如`MockServer`或`...

    连接池Demo

    2. 连接池配置:包括最大连接数、最小连接数、初始化连接数、超时时间等参数。这些参数可以根据应用的需求和服务器的负载进行调整,以达到最优的性能和资源利用率。 3. 连接的获取与释放:应用通过调用数据源的`get...

    基于QT5的modbus服务器和客户端demo

    本项目“基于QT5的modbus服务器和客户端demo”提供了在QT5环境下实现Modbus通信的示例代码,对于理解和开发相关应用具有很高的参考价值。 首先,我们需要理解QT5是什么。QT5是Qt框架的一个版本,它是一个跨平台的...

    UDP与服务器通讯demo

    在“UDP与服务器通讯demo”中,我们可以学习到以下几个关键知识点: 1. **DatagramSocket**: Android中实现UDP通信的主要类是`DatagramSocket`,它代表一个UDP套接字,用于发送和接收数据报(datagrams)。开发者...

    用Xcode写的AsyncSocket客户端和服务器端Demo

    总之,这个"用Xcode写的AsyncSocket客户端和服务器端Demo"是一个很好的学习资源,涵盖了基本的TCP网络通信流程,包括连接、发送/接收数据、错误处理和连接管理。通过深入研究这个Demo,开发者可以掌握iOS应用中的...

    基于DBCP/c3p0/Tomcat的数据库连接池的demo

    在DBCP中,可以通过设置各种参数来优化连接池的性能,如最大连接数、最小连接数、超时时间等。 **c3p0** c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0提供了许多...

    海康摄像头web二次开发demo(官方DEMO)

    海康摄像头Web二次开发Demo是官方提供的一种基于Web平台对海康摄像头进行功能扩展和定制的示例项目。这个DEMO允许开发者通过JavaScript脚本来实现对海康摄像头的各种操作,如云台控制、录像功能以及参数设置等,适用...

    Socket demo

    在这个"Socket demo"中,我们有两个关键的文件:Server.java和Client.java,分别代表了服务器端和客户端的角色。接下来,我们将深入探讨这两个方面。 首先,让我们从服务器端(Server.java)开始。服务器端的主要...

    Qt socket demo

    对于处理大量并发连接的服务器,通常需要在每个客户端连接上运行一个独立的线程,以避免阻塞主线程。Qt的`QThread`类可以方便地实现这一功能。 7. **代码结构** "server"文件可能包含了服务器端的主函数、网络...

    Simple Client-Server Demo 简单的客户端服务器模型

    我们通常使用`socket()`函数创建一个套接字,`bind()`函数绑定套接字到特定的IP地址和端口号,`listen()`函数让服务器开始监听连接,`accept()`函数接受客户端的连接请求,`connect()`函数用于客户端连接服务器,`...

Global site tag (gtag.js) - Google Analytics