[英]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.