上次解决了移动资费页的问题,以为基本OK了,今天测试2630i的机子的时候,在这个方法里抛出 Error in HTTP operation, 上网查了一个,老外有几个贴子是关于这个问题的,其中一个解决方法是先Get一下,再Post,已试过,没用,另一个方法是url = URLCode.encode(url),也试过了,没用.唉,刚出狼窝,又入虎口啊!
public HttpConnection openHttpConnection(String url, String contentType) throws IOException{
	int i = 0;
		
	HttpConnection sc = null;
	for(i = 0; i < 5; i++){
		if (sc != null) {
			sc.close();
		}
		sc = (HttpConnection) Connector.open(url, Connector.READ, true);
		sc.setRequestMethod(HttpConnection.GET);
		if (sc.getHeaderField("Content-Type").indexOf(contentType) > -1) {
			if (sc.getResponseCode() == HttpConnection.HTTP_OK) {
				return sc;
			}
			break;
		}
	}
	throw new IOException("Max Connector open count.");
}
评论
iwinyeah 2008-06-22
非也非也,同是S40的机子,如果是6300的话的确是不需要用代理的,但2630i死活不行,如果不采用这个方法的话,无论你对手机如何设置,都不会成功的。
wuhua 2008-06-19
兄弟不用这么麻烦吧。很明显抛出error in HTTP opreation这个错误的原因是:
你用手机上网,你选择的是cnwap上网方式,但是你代码里面却是直连的方式进行上网所以导致了这个问题。
我在S40的Nokia6300实践过,符合我上面所有的东西。
iwinyeah 2008-03-30
看来要实现java的write once, run anywhere真是极不现实的,这个问题我在网上找了很时间,都得不到解决的办法,今天早上,我都准备放弃对这个型号手机的支持了,作最后的努力,想不到问题又回到了原点,这个手机是要设代理的!原来网上也有接入点的讨论,但主要集中在对手机的上网参数进行设置,我在昨晚也进行了多种的尝试,都失败了.
想到到同是S40的手机,也有如此多的不同,最后,我以以下代码解决了问题:
String proxy = "http://10.0.0.172/"
// 打开httpConnection
public HttpConnection openHttpConnection(String url, String contentType)
			throws IOException {

	String serverName = null;
	boolean needProxy = false;
	if (proxy != null && proxy.length() > 0) {
		needProxy = true;
		// http://servername/fileName
		int i = url.indexOf("/", 7) + 1;
		serverName = url.substring(0, i);
		url = global.connectParm + url.substring(i);
	}

	HttpConnection sc = null;
	for (int i = 0; i < 5; i++) {
		if (sc != null) {
			sc.close();
		}

		sc = (HttpConnection) Connector.open(url, Connector.READ, true);
		if (needProxy) { // 使用代理
			sc.setRequestProperty("X-Online-Host", serverName);
			sc.setRequestProperty("Accept", "*/*");
		}
		sc.setRequestMethod(HttpConnection.GET);

		if (sc.getHeaderField("Content-Type").indexOf(contentType) > -1) {
			if (sc.getResponseCode() == HttpConnection.HTTP_OK) {
				return sc;
			}
			break;
		}
	}
	throw new IOException("Max Connector open count.");
}

发表评论

您还没有登录,请登录后发表评论

iwinyeah
搜索本博客
我的相册
C8609f76-ccc2-3dbc-a9e8-b5e08077b8c2-thumb
jaccount1.0.7
共 5 张
最近加入圈子
存档
最新评论