[英]How to get a query string for a url using httpUrlConnection , android
我正在使用HttpUrlConnection将查询发布到网页。 该网页接受了我的请求,并再次发布。 例如:www.unknown.com
URL url = new URL("http://www.unknown.com"); //$NON-NLS-1$
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(15*1000);
urlConnection.setDoInput(true);
urlConnection.setDoOutput (true);
urlConnection.setUseCaches (false);
urlConnection.setAllowUserInteraction(true);
out = new OutputStreamWriter(urlConnection.getOutputStream());
string content = "var1=5&var2=0&var3=6"; //$NON-NLS-1$
out.write(content);
out.flush();
out.close();
该代码可以正常工作,并且我正在获取html代码。 问题在于,网页在接受我的请求时正在处理另一个HTTP“ POST”方法。 例如,在我请求之后,URI是: http : //www.unknown.com? var1=5& var2=0& var3=6& var4=1500
我需要在代码中获取“ var4”的值,但找不到任何解决方案。 HttpUrlConnection.getUrl()仅返回地址http://www.unknown.com ! 有任何建议吗? 谢谢。
如何使用“ getQuery()”来检索查询字符串。
String query = url.getQuery();
这将为您提供该URL的查询部分。
使用StringTokenizer分隔参数。 (您将必须两次应用StringTokenizer。)
首先从查询字符串中获取用“&”分隔的令牌。 这将返回“ val1 = 5”,“ val4 = 1500”等。
对上述令牌再次应用StrinTokenizer。 这次检索以“ =”分隔的令牌。 现在,通过它进行迭代,第一个标记将是参数名称“ val4”,第二个标记将是值“ 1500”。
StringTokenizer st = new StringTokenizer(query,"&",false); //query is from getQuery()
while (st.hasMoreElements())
{ // First Pass to retrive the "parametername=value" combo
String paramValueToken = st.nextElement().toString();
StringTokenizer stParamVal = new StringTokenizer(paramValueToken, "=", false );
int i = 0;
while (stParamVal.hasMoreElements())
{
//Second pass to separate the "paramname" and "value".
// 1st token is param name
// 2nd token is param value
String separatedToken = stParamVal.nextElement().toString();
if( i== 0)
{
//This indicates that it is the param name : ex val4,val5 etc
String paramName = separatedToken;
}
else
{
// This will hold value of the parameter
String paramValue = separatedToken;
}
i++;
}
}
http://download.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.