我试图使用HttpGet实现ping,但行为是随机的。HttpGet Android API的随机行为
我有下面的代码,测试网络/服务器连接:
boolean result = false;
HttpGet request = new HttpGet("www.MyServer.com");
HttpParams httpParameters = new BasicHttpParams();
HttpClient httpClient = new DefaultHttpClient(httpParameters);
try
{
HttpConnectionParams.setConnectionTimeout(httpParameters, 6000);
HttpConnectionParams.setSoTimeout(httpParameters, 6000);
HttpResponse response = httpClient.execute(request);
int status = response.getStatusLine().getStatusCode();
if (status == HttpStatus.SC_OK)
{
result = true;
}
}
catch(Exception e)
{
e.printStackTrace();
result = false;
}
Log.d("App", "Ping Result:"+result);
上面的代码,我在线程中运行,因为它可能需要一段时间。 当我第一次运行这个测试时,我得到的结果是真实的,但之后行为是随机的,有时它给了我错误'主机不可达',我得到的结果为假。
我只想测试服务器是否可以从当前配置的Android网络访问。
是否有任何可靠的API来测试互联网/服务器连接?
UPDATE:
在服务我具有以下功能,其启动测试。
void startTest()
{
ServerTestThread mServerTestThread = new ServerTestThread()
mServerTestThread.start();
}
class ServerTestThread extends Thread
{
boolean result = false;
public void run()
{
//HttpGet code
//Send Message TO GUI Thread with result.
}
}
高于startTest
函数正在创建测试线程的实例并调用启动函数。当测试完成时,我将消息发送给包含结果的主线程。
谢谢。
感谢您的答复,但为什么它的第一次。如果超时时间少于第一次也应该失败。我需要添加某种清理,因为此代码正在一个线程中调用。 – User7723337 2012-03-16 09:02:20
你可以发布代码,以便我看到你如何运行线程? – Caner 2012-03-16 09:05:05
请参阅我更新的问题。 – User7723337 2012-03-16 09:33:49