2017-10-20 41 views
0

我想在我的android應用程序中實現VPOS。我有C#實現。我正在嘗試根據Android進行更改。在C#代碼中;如何在android中使用NameValuePair構造HTML?

NameValueCollection parameters = new NameValueCollection(); 
parameters.Add("mode", strmode); //just one of parameter. 
RedirectAndPOST(this, "url", parameters); 
public static void RedirectAndPOST(Page page, string destinationUrl, NameValueCollection data) 
    { 
     string strForm = PreparePOSTForm(destinationUrl, data); 

     page.Controls.Add(new LiteralControl(strForm)); 
    } 

    private static String PreparePOSTForm(string url, NameValueCollection data) 
    { 
     string formID = "PostForm"; 

     StringBuilder strForm = new StringBuilder(); 

     strForm.AppendFormat("<form id=\"{0}\" name=\"{0}\" action=\"{1}\" method=\"POST\">", formID, url); 

     foreach (string key in data) 
     { 

      strForm.AppendFormat("<input type=\"hidden\" name=\"{0}\" value=\"{1}\">", key, data[key]); 

     } 

     strForm.Append("</form>"); 

     StringBuilder strScript = new StringBuilder(); 

     strScript.Append("<script language=\"javascript\">"); 

     strScript.AppendFormat("document.{0}.submit();", formID); 

     strScript.Append("</script>"); 




     return strForm.ToString() + strScript.ToString(); 


    } 

在我的Java代碼,首先,我創建NameValuePair,然後,我創建結構HTMLpreparePOSTMethod方法。之後,我發送HTTP POST Request

ArrayList<NameValuePair> parameter = new ArrayList<NameValuePair>(); 
parameter.add(new BasicNameValuePair("mode", strmode)); 
parameter.add(new BasicNameValuePair("cardnumber", cardNumber)); 
parameter.add(new BasicNameValuePair("cardexpiredatemonth", cardExpireDateMonth)); 
parameter.add(new BasicNameValuePair("cardexpiredateyear", cardExpireDateYear)); 
parameter.add(new BasicNameValuePair("cardcvv2", CardCvv2)); 
post = preparePOSTForm("url", parameter); 
private static String preparePOSTForm(String url, ArrayList<NameValuePair> data) 

    { 
     String formID = "PostForm"; 

     StringBuilder strForm = new StringBuilder(); 

     strForm.append(String.format("<form id=\"{0}\" name=\"{0}\" action=\"{1}\" method=\"POST\">", formID, url)); 

     for (int i=0; i<data.size(); i++) { 

      strForm.append(String.format("<input type=\"hidden\" name=\"{0}\" value=\"{1}\">", data.get(i).getName(), data.get(i).getValue())); 

     } 

     strForm.append("</form>"); 

     StringBuilder strScript = new StringBuilder(); 

     strScript.append("<script language=\"javascript\">"); 

     strScript.append(String.format("document.{0}.submit();", formID)); 

     strScript.append("</script>"); 

     param = strForm.toString() + strScript.toString(); 
     System.out.println("result: "+param); 
     return strForm.toString() + strScript.toString(); 
    } 

但是,我不能構建HTML。

Result: <form id="{0}" name="{0}" action="{1}" method="POST"><input type="hidden" name="{0}" value="{1}"><input type="hidden" name="{0}" value="{1}"><input type="hidden" name="{0}" value="{1}"><input type="hidden" name="{0}" value="{1}"><input type="hidden" name="{0}" value="{1}"><input type="hidden" name="{0}" value="{1}"></form><script language="javascript">document.{0}.submit();</script> 

如何使用名稱 - 值對和StringBuilder或其他方法構造HTML

+0

'parameter.add(new BasicNameValuePair(「mode」,strmode));'請添加更多變量,不要使用變量作爲strmode,因爲我們不知道你在用什麼。 – greenapps

+0

請格式化您的結果。不要將它張貼在一行上。你讓我們滾動半個小時。 – greenapps

回答

1
strForm.append(String.format("<input type=\"hidden\" name=\"{0}\" value=\"{1}\">" 
     , data.get(i).getName(), data.get(i).getValue())); 

正如你看到的參數沒有填寫你只是得到該格式字符串不變。

使用%s代替{0}和{1}。

+0

感謝您的快速響應! – user8654574