Col*_*las 4 eclipse android httpclient keep-alive asynchttpclient
我正在尝试编写一个Android应用程序,它将一些帖子值发送到托管在专用服务器上的php文件并存储数组resoult
代码是这样的
HttpPost httppost;
DefaultHttpClient httpclient;
httppost = new HttpPost("http://IP/script.php");
HttpParams param = new BasicHttpParams();
param.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
// httppost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
HttpProtocolParams.setContentCharset(param, "UTF-8");
httpclient = new DefaultHttpClient(param);
ResponseHandler <String> res=new BasicResponseHandler();
List<NameValuePair> nameValuePairs;
nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("id","1"));
nameValuePairs.add(new BasicNameValuePair("api", "1"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Log.v("1",System.currentTimeMillis()+"");// Log to know the time diff
String result= httpclient.execute(httppost, res);
Log.v("2",System.currentTimeMillis()+""); // Log to know the time diff
Run Code Online (Sandbox Code Playgroud)
这段代码浪费了大约2.5秒(在3G或WiFi上)发送帖子并从服务器获得"ok"字符串,即使有好的wifi这次只下来2.2/2.0秒
我在我的计算机上运行了一个简单的Ajax发送邮件脚本,通过同一部手机和3G连接到互联网,需要大约.300ms才能做同样的事情¿相同的连接,相同的动作,2秒的差异?
/// ***更新
我在我的计算机上再次尝试了我的jquery脚本(使用移动3G +/HDSPA连接)
的平均时间应答是大约250毫秒,但总是在第一请求到1.7secs,我试图以30秒的间隔发送讯息和我得到1.5秒的平均时间,然后我试图发送以2秒的间隔的柱,所述第一是1.41s,接近252ms
在这里,你们可以查看图表:http://i46.tinypic.com/27zjl8n.jpg
这种与电缆连接(标准家用DSL)相同的测试始终提供约170ms间隔的固定时间响应(这里没有可靠的参数,但恕我直言,可能第一次尝试略高一点)
因此,在第一次尝试中有一些(或错误的)严重影响移动连接的东西,任何想法的人?
小智 7
尝试使用此配置
HttpClient httpclient = new DefaultHttpClient();
HttpParams httpParameters = httpclient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpParameters, WAIT_RESPONSE_TIMEOUT);
HttpConnectionParams.setTcpNoDelay(httpParameters, true);
Run Code Online (Sandbox Code Playgroud)
这是关于setTcpNoDelay的javadoc :
public static void setTcpNoDelay (HttpParams params, boolean value)
自:API级别1
确定是否使用Nagle的算法.Nagle的算法试图通过最小化发送的段数来节省带宽.当应用程序希望减少网络延迟并提高性能,他们可以禁用Nagle算法(即启用TCP_NODELAY).数据将提前发送,代价是带宽消耗增加.
参数
如果不使用Nagle的算法(即启用TCP_NODELAY),则值为true,否则为false.
| 归档时间: |
|
| 查看次数: |
11851 次 |
| 最近记录: |