解决方案 »
- c# winform怎么实现类似 access窗体设计里面的 组合框 功能
- C#能够把TXT转换为Excel吗?在未安装office的情况下
- 问一个图片转换二进制之后存储到2005的问题
- listview如何将Item的Text全部显示出来
- try catch处理异常,已经知道会有NULL异常发生,现在只想处理除NULL异常外的其它异常,也就是对NULL异常视而不见,在catch块中要怎样写?
- 如何用C#写一个像GOOGLE或百度的IE工具条
- 组件之间的通信是用消息好还是用接口好
- 怎么例程运行都出错了,谁来教教我?
- C#中的参数有些我看了半天都不知道怎么回事~~~~~~~~版主和高手来说下参数到底怎么用好么?
- VS.NET变量声明问题
- label的click事件小问题
- 这个该怎么写呢?实在写不出来了,头好痛!!
xml处理类 xmldocument xmlreader xmlwriter datasetxml文档转为字符串后再发,XMLDOCMENT.OUTXML
1:怎样转换xml文档的格式为为字符串
2:怎样发给指定的地址
给点实际demo!
localhost1.Service1 s = new CommunicatePort.Web.localhost1.Service1();
int a = s.GetSum(1,2);
XmlDocument doc = new XmlDocument();
doc.Load("fileName");
string form = string.Format("<form id='DynamicForm' action='xxx.aspx'><input type='hidden' value='{0}' /></form><script>document.getElementById('DynamicForm').submit();</script>", doc.OuterXml);
Response.Write(form);
http://blog.csdn.net/Sandy945/archive/2009/05/12/4170512.aspx
public static void FindMainID3(string ws_url, string ClientJob, string mainID, ref DataTable dsmain, ref DataTable dsline, ref DataTable dssubline, string linetag, string sublinetag)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ws_url);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "Post";
XmlDocument requestdom = new XmlDocument();
XmlElement reqrootele = requestdom.CreateElement("Steel-ERP");
requestdom.AppendChild(reqrootele); XmlElement reqheadele = requestdom.CreateElement("Head");
reqheadele.SetAttribute("SessionID", "681A4E9A140F42E4E044001321BD1C8B");
reqrootele.AppendChild(reqheadele); XmlElement reqbodyele = requestdom.CreateElement("Body");
reqrootele.AppendChild(reqbodyele); XmlElement reqclientele = requestdom.CreateElement("Client");
reqclientele.SetAttribute("Job", ClientJob);
reqbodyele.AppendChild(reqclientele); XmlElement reqmainele = requestdom.CreateElement("Main");
reqmainele.SetAttribute("Job", "Find");
reqmainele.SetAttribute("ID", mainID);
reqclientele.AppendChild(reqmainele); string data = requestdom.InnerXml;
byte[] byteData = Encoding.UTF8.GetBytes(data); request.ContentLength = byteData.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(byteData, 0, byteData.Length);
} Stream responsestream;
try
{
responsestream = request.GetResponse().GetResponseStream();
}
catch (Exception e)
{
throw new Exception("客户端POST数据发生异常:" + e.Message);
}
XmlDocument responsedom = new XmlDocument();
responsedom.Load(responsestream);
XmlElement mainele = (XmlElement)responsedom.GetElementsByTagName("Main")[0];
DataRow mainrow = dsmain.NewRow();
for (int i = 0; i < mainele.Attributes.Count; i++)
{
if (!dsmain.Columns.Contains(mainele.Attributes[i].Name))
{
dsmain.Columns.Add(mainele.Attributes[i].Name);
}
mainrow[i] = StringUtil.IsExistAttr(mainele.Attributes[i]);
}
dsmain.Rows.Add(mainrow);
DataRow linerow;
foreach (XmlElement ele in mainele.GetElementsByTagName("Line1"))
{
DataRow subrow;
foreach (XmlElement subele in ele.GetElementsByTagName("SubLine1"))
{
subrow = dssubline.NewRow();
for (int i = 0; i < subele.Attributes.Count; i++)
{
if (!dssubline.Columns.Contains(subele.Attributes[i].Name))
{
dssubline.Columns.Add(subele.Attributes[i].Name);
}
subrow[i] = StringUtil.IsExistAttr(subele.Attributes[i]);
}
dssubline.Rows.Add(subrow);
} linerow = dsline.NewRow();
for (int i = 0; i < ele.Attributes.Count; i++)
{
if (!dsline.Columns.Contains(ele.Attributes[i].Name))
{
dsline.Columns.Add(ele.Attributes[i].Name);
}
linerow[i] = StringUtil.IsExistAttr(ele.Attributes[i]);
}
dsline.Rows.Add(linerow);
}
dsmain.AcceptChanges();
dsline.AcceptChanges();
dssubline.AcceptChanges();
}
WebService里接受请求的方法:[WebMethod]
public XmlDocument DoPost()
{
try
{
XmlDocument repdoc = new XmlDocument();
XmlElement repRootEle = repdoc.CreateElement("Steel-ERP");
repdoc.AppendChild(repRootEle);
XmlElement repBodyEle = (XmlElement)repRootEle.AppendChild(repdoc.CreateElement("Body"));
XmlElement repServerEle = (XmlElement)repBodyEle.AppendChild(repdoc.CreateElement("Server"));
Stream requeststream = System.Web.HttpContext.Current.Request.InputStream;
XmlDocument requestdom = new XmlDocument();
//requestdom.Load(System.Web.HttpContext.Current.Server.MapPath("Config") + "\\UserInfo_Find.xml");
requestdom.Load(requeststream); XmlNode client = requestdom.GetElementsByTagName("Client")[0]; string job = client.Attributes["Job"].Value;
ABizMgr abm = null;
if (job.StartsWith("UserInfo_"))
{
abm = new UserInfoMgr(job);
abm.ManagerVO((XmlElement)client, ref repServerEle, ref repdoc);
}
return repdoc;
}
catch (Exception e)
{
return null;
}
}
然后调用的时候这么写: protected void Button1_Click(object sender, EventArgs e)
{
dtmain.Clear();
dtline.Clear();
dtsubline.Clear();
ActionUnit.FindMainID3("http://localhost:4942/WebSite4/WS_ES.asmx/DoPost", "UserInfo_Find", "4e043cc942e144f5823ba0481f465a16", ref dtmain, ref dtline, ref dtsubline);
BindTOGV();
}
客户端通过XML与中间层交互.
客户端发送一个这样格式的XML文件:<?xml version="1.0" encoding="gb2312"?>
<Steel-ERP>
<Head SessionID="681A4E9A140F42E4E044001321BD1C8B"/>
<Body>
<Client Job="UserInfo_Find">
<Main Job="Find" ID="4e043cc942e144f5823ba0481f465a16"/>
</Client>
</Body>
</Steel-ERP>
中间层返回一个指定格式的XML文件.基本上跟楼主的需求差不多的,XML文件格式是要两边约定好的,否则无法通信.楼主可以试着改改``原理基本上就是这样了,代码改改,改成你自己的需求就可以了
doc.Load("fileName");
string form = string.Format("<form id='DynamicForm' action='xxx.aspx'><input type='hidden' value='{0}' /></form><script>document.getElementById('DynamicForm').submit();</script>", doc.OuterXml);
Response.Write(form);用doc.OuterXml返回的只是内容,而其中的xml格式掉了,对方让我传整个格式都要,就传内容他们能解析么?
string sXML = sr.ReadToEnd();
sr.Close();
=====>
你不是说这个xml已经生成好了么?
有格式的.
直接传个 字符串 参数就可以了
HttpWebRequest 和 responsestream
MSDN的例子:string uriString;
Console.Write("\nPlease enter the URI to post data to : ");
uriString = Console.ReadLine();
Console.WriteLine("\nPlease enter the data to be posted to the URI {0}:",uriString);
string postData = Console.ReadLine();
// Apply Ascii Encoding to obtain an array of bytes.
byte[] postArray = Encoding.ASCII.GetBytes(postData);// Create a new WebClient instance.
WebClient myWebClient = new WebClient();// postStream implicitly sets HTTP POST as the request method.
Console.WriteLine("Uploading to {0} ...", uriString); Stream postStream = myWebClient.OpenWrite(uriString);postStream.Write(postArray,0,postArray.Length);// Close the stream and release resources.
postStream.Close();Console.WriteLine("\nSuccessfully posted the data.");现在非常流行WinForm与web交互么?刚刚见一个帖子就是这个