`

连接服务器超时的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); ...

    socket长连接 demo

    定制心跳对象,客户端心跳机制发送数据,保证连接,服务器延时检查,超时的断开连接,支持多客户端连接,并相应心跳对象

    C#物联网平台服务器框架源码(自带WEB API,硬件数据接收服务,一键部署,无需IIS)

    5、与传统协议方法不同,比如Modbus设备,需要PC端主动去连接设备,而这套框架只需要监听端口,服务器就能自动去轮询终端所有设备。 6、API接口具备动态增加轮询读取数据的任务,并且具备定时读取任务启停、任务创建...

    代码客:Iocp Tcp Server(G-TcpServer) 1.0 Demo源码

    但实际应用中,正常情况下连接率远少于1万/S,尤其是长连接的服务器,即使是短连接的服务器也不会发生这样的连接率。可能的情况是DOS,如果是影响也不大,因为还有MaxConnection控制,超过这个数的连接就立即被Close...

    代码客:G-TcpServer(IOCP) 1.0 正式版及Demo源码

    但实际应用中,正常情况下连接率远少于1万/S,尤其是长连接的服务器,即使是短连接的服务器也不会发生这样的连接率。可能的情况是DOS,如果是影响也不大,因为还有MaxConnection控制,超过这个数的连接就立即被Close...

    go-amqp-reconnect:github.comstreadwayamqp连接和通道的自动重新连接示例

    streadway / amqp连接/通道自动重新连接包装如果rabbitmq服务器重新启动/关闭,则streadway / amqp连接/通道不会重新连接。 对于简单的开发人员,这里是带有详细注释的自动重新连接包装。如何更改现有代码添加导入...

    miniircd:一个非常简单的Internet中继聊天(IRC)服务器

    没有标识符查找(这样,位于防火墙后面,无需发送NACK即可过滤标识符端口的人员就可以在没有长时间超时的情况下进行连接)。 与--chroot和--setuid一起使用时,具有合理的安全性。 局限性 无法连接到其他IRC服务器...

    有佳完成端口网络通信系统

    2个客户端组件为IBaseSession和IPacketSession,前者IBaseSession提供了多服务器顺序连接,自动重试,超时设置,连接通知(连接中,已连接,无法连接,已断开等)等。。。 后者IPacketSession在前者基础上添加了...

    迷你版SQL2000服务器

    +控制程序增加对指定消息的处理,方便用户控制迷你数据库,详见包内的“控制demo”例程。 1.1.5 +同目录下只允许启动一个EXE,互斥对象,不影响启用多实例; ^原“恢复”变更为“还原”,还原时显示默认的数据库...

    Spring Boot 整合 Netty + WebSocket 实时消息推送

    1、基于Spring Boot 实现的WebSocket实时数据通信Demo 2、结合Netty实现多客户端之间进行网络通信 3、在Web端建立多客户端之间的通信机制

    consul_kv:领事KV商店

    连接领事服务器超时 consul_kv_address(必填) 领事KV商店的地址,例如: "https://demo.consul.io/v1/kv" 用法 1.设置正确的配置 2.把KV对 iex ( 1 ) &gt; ConsulKv . put ( " consul-kv/k1 " , " v1 " ) { :ok , ...

    esp_mesh_demo

    每隔一段时间,会循环读取每个注册的传感器采集到的数据,并通过网状网络发送到服务器端(没有编写服务器端程序,现在使用打印输出代替) 。另外,也可以手动指定需要读取数据的传感器。 文件说明 main.

    socket演示程序

    CUDPSock5在实际使用中发现与sock5服务器的连接不是很稳定,大概是我没能很好地解析sock5协议的关系。 这个DEMO在后期添加了CFtp这个类,处理FTP下载。之所以未使用WinInet,因为它有一个MS确认的BUG:超时设置...

    系统监控软件Sigar-System_Runtime.zip

    介绍利用java程序检查服务器或主机的运行时信息,包括操作系统、CPU使用情况、内存使用情况、硬盘使用情况以及网卡、...当客户端连接192.168.191.* 时可用连接,但是响应超时。但是连接 172.29.131.* 时则可以正常使用

    CURL用法大全

    通常服务器的日志会记录客户端浏览器的信息 curl -A “浏览器信息” http://www.neocanable.com 5.批量下载文件 curl http://www.xxx.com/action/[1-100].html &gt; /dev/null 这个最适合爬自己网站的缓存了 文件...

    c#编写的基于Socket的异步通信系统封装DLL--SanNiuSignal.DLL

    你可以改变客户端连接服务器的IP地址和端口号;但 如果当断开的时候不想重连;可以设置ITxClient.ReconnectMax=0; 二:登录篇,在引擎启动之前,用户可以设置ITxClient.OutTime来设置超时时间;默认为10秒,也就是...

    EasyWebSvr

    ◇ 支持自定义端口、最大连接数、网络超时 ◇ 支持自定义缺省文档列表,支持目录浏览 ◇ 支持中文UTF-8编码 ◇ 支持Cookie,支持SOAP等 ◇ 支持多线程文件下载、断点续传 ◇ 支持访问日志记录 ◇ 极少的资源...

    Nginx代理axios请求以及注意事项详解

    前言 近期写个小demo,因为用到某大厂的在线数据,接口做了跨域限制,... #连接超时时间 keepalive_timeout 120; #gzip压缩开关及相关配置 gzip on; gzip_min_length 1k; gzip_buffers 4 32k; gzip_http_version

    iOS http 学习

    //设置连接超时,默认240秒 [request setValue:length forHTTPHeaderField:@"Content-Length"];//设置数据长度 [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Contene-Type"];//...

Global site tag (gtag.js) - Google Analytics