0
我正在爲使用c#的公司編寫Web服務。所以我有一個測試頁面default.aspx。 從aspx頁面我有一個輸入名稱=「zip」,我需要傳遞給web服務。 我無法弄清楚如何獲取發佈的數據。 Webservice將根據以xml形式傳遞的郵政編碼運行sql語句。然後返回郵政編碼xml作爲迴應。c#asmx web服務。如何從aspx頁面讀取發佈數據
代碼來自aspx頁面下方。
string sendXml = String.Format(@"<?xml version=""1.0"" encoding=""utf-8""?>,
<zip>{0}</zip>",
Request["zip"]);
string postXml = "xmlRequest=" + HttpUtility.UrlEncode(sendXml);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:51857/zipfinder.asmx/showRecords");
req.Method = "POST";
req.ContentLength = postXml.Length;
req.ContentType = "application/x-www-form-urlencoded";
using (StreamWriter writer = new StreamWriter(req.GetRequestStream()))
{
writer.Write(postXml);
writer.Close();
}
var result = "";
try
{
using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
{
string getResult = reader.ReadToEnd();
Response.Write(getResult);
}
}
catch (Exception ex)
{
Response.Write("error: " + ex.ToString());
}
那麼的.asmx頁面上
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public DataSet getZip() {
DataSet dataSet = db.QueryDataRows("*", "zip_codes_simple", "zip = '00501' or zip = '00544'", "", "zip_codes_simple");
return dataSet;
}
[WebMethod]
public XmlDocument showRecords(){
DataSet dataSet = getZip();
string recs = "";
XmlDocument doc = new XmlDocument();
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null);
doc.AppendChild(dec);
XmlNode root = doc.CreateElement("zipcodes");
doc.AppendChild(root);
XmlElement zip = doc.CreateElement("zip");
XmlElement type = doc.CreateElement("type");
XmlElement primaryCity = doc.CreateElement("primaryCity");
XmlElement state = doc.CreateElement("state");
XmlElement latitude = doc.CreateElement("latitude");
XmlElement longitude = doc.CreateElement("longitude");
foreach (DataTable dt in dataSet.Tables)
{
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
zip.InnerText = dr["zip"].ToString();
root.AppendChild(zip);
type.InnerText = dr["type"].ToString();
root.AppendChild(type);
primaryCity.InnerText = dr["primary_city"].ToString();
root.AppendChild(primaryCity);
state.InnerText = dr["state"].ToString();
root.AppendChild(state);
latitude.InnerText = dr["latitude"].ToString();
root.AppendChild(latitude);
longitude.InnerText = dr["longitude"].ToString();
root.AppendChild(longitude);
//recs = "<p>" + dr["zip"] + ", " + dr["primary_city"] + "</p>";
//Response.Write("<p>" + dr["zip"] + " in " + dr["state"]);
}
}
else
{
//recs = "<p style='color: red;'>Invalid user name or password</p>";
}
}
return doc;
}
我怎樣才能從ASPX頁面獲得郵政編碼傳遞給查詢,其中拉鍊=「」 我在尋找的東西閱讀格式化的字符串並從傳入的xml文檔中提取郵政編碼。
任何幫助表示讚賞。 謝謝
是的,它是因爲我們有一個不支持內聯服務器標籤的cms。在asmx文件中有沒有方法可以調用xml郵政編碼。 aspx中的示例我可以使用Request [「field」],但是,我還沒有看到引用xml的方法。基本上我需要讀取該xml的內容,讀取一個字段並在sql中使用值聲明。 –
好的,所以'Request [「zip」]'正在工作?如果不是,請嘗試'Request.Form [「zip」]'。要從XML文檔中提取信息,可以使用xPath,例如'/ zipcodes/zip'將匹配'zipcode'內的所有'zip'。由於變量'string getResult = reader.ReadToEnd();'包含響應XML,因此可以將其加載到XmlDocument中,然後使用doc.SelectNodes(「/ xpath/to/node」)執行查詢。我不確定我是否理解你的問題。 –