簡體   English   中英

c#asmx Web服務。 如何從aspx頁面中讀取帖子數據

[英]c# asmx web service. How to read in post data from aspx page

我正在使用c#為我的公司編寫Web服務。 所以我有一個測試頁default.aspx。 在aspx頁面上,我有一個輸入名稱=“ zip”,我需要將該輸入名稱傳遞給Web服務。 我不知道如何獲取發布的數據。 Webservice將基於作為xml傳遞的郵政編碼運行sql語句。 然后返回郵政編碼xml作為響應。

下面的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頁面獲取郵政編碼,以傳遞給zip =''的查詢,我正在尋找一些要在格式化字符串中讀取的內容,並從傳入的xml文檔中提取郵政編碼。

任何幫助表示贊賞。 謝謝

如果我理解正確,那么您希望從頁面的<input type='text' name='zip' />中獲取值。 由於它不是asp:TextBox ,您應該使用Request.Form來獲取它,因此您的代碼應如下所示:

string sendXml = String.Format(@"<?xml version=""1.0"" encoding=""utf-8""?>,
                            <zip>{0}</zip>",
                                Request.Form["zip"]);

但是還有另一種解決方案:而不是這樣做:

<input type='text' name='zip' />

您可以使用ASP.NET Webform控件:

<asp:TextBox runat='server' ID='zip' />

然后,您可以使用zip.Text獲得值。

有什么理由不這樣做嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM