您的位置:首页 > 运维架构

OPHONE获得USER AGENT[权威解决方案]

2010-08-24 14:38 106 查看
论坛里有几个人发了一些代码,如何获得UA,但是自己都实践过了一遍,一个都不行。最近做OPHONE的项目,跟移动终端的人打了不少交道,了解了一些相关知识,这里把权威的解决方案发布出来。 我不是方法的发明者,但是我是方法的实践者。顺便也在这里感谢相关的人。

原理:

OPHONE的UA存放位置:

1)OPHONE 1.0和1.5 存放于/opl/etc/properties.xml

1)OPHONE 2.0 存放于/opl/etc/product_properties.xml

大家可以通过下面的步骤自己查看:

1),连上手机,或者模拟器。

2),输入 adb shell


3),输入 cd opl

4),输入 cd etc

5),输入 cat properties.xml (或者cat product_properties.xml 【OPHONE2.0】)

结果如下图:







ophone.png

(6 KB)

ophone ua

2010-08-24 14:09

以上就是properties.xml的内容,接下来就是获得这个UA,加到自己的联网请求里去。

我自己写了一个,适用于目前3个版本的OPHONE。

AndroidPlatform.java

package com.***.****;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

public class AndroidPlatform {

public static final String KEYSTRING_USER_AGENT = "user_agent_key";

public static String getUAFromProperties()

{

try {

FileInputStream is = getPropertyStream();

ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();

byte buf[] = new byte[1024];

for(int k = 0; -1 != (k = is.read(buf));)

bytearrayoutputstream.write(buf, 0, k);

String fileString = new String(bytearrayoutputstream.toByteArray(), "UTF-8");

return getProperties(KEYSTRING_USER_AGENT, fileString);

//System.out.println("IS FILE Android Platform " + bytearrayoutputstream.size() + " "+());

} catch (Exception e) {

// TODO: handle exception

System.out.println("IS FILE erororo");

e.printStackTrace();

}

return null;

}

public static FileInputStream getPropertyStream()

{

try {

File property = new java.io.File("/opl/etc/properties.xml");

if(property.exists())

{

return new FileInputStream(new java.io.File("/opl/etc/properties.xml"));

}

else

{

property = new java.io.File("/opl/etc/product_properties.xml");

if(property.exists())

{

return new FileInputStream(new java.io.File("/opl/etc/product_properties.xml"));

}

else

{

return null;

}

}

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

return null;

}

public static String getProperties(String key, String content)

{

String STARTKEY = "<"+key+">";

String ENDKEY = "</"+key+">";

content = content.replace("/r", "");

content = content.replace("/n", "");

int startIndex = content.indexOf(STARTKEY) + STARTKEY.length();

int endIndex = content.indexOf(ENDKEY);

if(startIndex > -1 && endIndex > -1)

{

return content.substring(startIndex, endIndex);

}

else

return null;

}

}

联网请求时,加入UA即可,这样就做到了自动适配了。具体如下:

private int CountMoneyCMWAPNEWWAY(String urlstr)

{

String strHead = "";

try{

if(!GameLet._self.isNetworkCMWAPAvailable())

{

GameLet._self.ActiveNetWorkByMode("wap");

Thread.sleep(5000);

}

int splashIndex = urlstr.indexOf("/", 7);

String hosturl = urlstr.substring(7, splashIndex);

String hostfile = urlstr.substring(splashIndex);

HttpHost proxy = new HttpHost( "10.0.0.172", 80, "http");

HttpHost target = new HttpHost(hosturl, 80, "http");

HttpParams httpParams = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000);

HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000);

HttpConnectionParams.setSocketBufferSize(httpParams, 8192);

HttpClientParams.setRedirecting(httpParams, true);

String userAgent = AndroidPlatform.getUAFromProperties();

HttpProtocolParams.setUserAgent(httpParams, userAgent);

DefaultHttpClient httpclient = new DefaultHttpClient(httpParams);

httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

HttpGet req = new HttpGet(hostfile);

HttpResponse rsp = httpclient.execute(target, req);

HttpEntity entity = rsp.getEntity();

InputStream inputstream = entity.getContent();

ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();

byte abyte1[] = new byte[1024];

for(int k = 0; -1 != (k = inputstream.read(abyte1));)

bytearrayoutputstream.write(abyte1, 0, k);

strHead = new String(bytearrayoutputstream.toByteArray(), "UTF-8");

httpclient.getConnectionManager().shutdown();

}

catch (Exception e) {

return 2;

}

if(strHead.indexOf("status=1301") > -1 || strHead.indexOf("status=1300") > -1)

{

return 1;

}

else

{

return 0;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐