对方使用一个系统每天把数据导出到一个XML文件中,然后把xml文件以流的方式直接POST到我们系统的某个http接口中,我们把得到的文件解析,入库,现在我太理解上面的那句话,请大家帮我解释一下,最好有一个例子?谢谢!!!

解决方案 »

  1.   

    我也不太理解   你可以给他提供一个WebService 然后让他调用
      

  2.   

    WebService  是用xml文件传输的
      

  3.   

    在你的HTTP接口里写:DataSet ds = new DataSet();
    ds.ReadXml(Request.InputStream);
    ........
      

  4.   

    web service如何接受一个XML流呢?
      

  5.   

    Request.InputStreamXmlDocument也可以接受Stream类型参数
      

  6.   

    那对方的应用程序如何写呢?既他怎么把XML转化为流给我呢?
      

  7.   

    public static DataSet sendRequest(string url)
    {
    HttpWebRequest request=null;
    HttpWebResponse response=null;
    Stream stream=null;
    StreamReader reader=null;
    DataSet ds=null;
    string b_temp = null;
    byte [] byteOut = null;
    try
    {
    request=(HttpWebRequest)WebRequest.Create(url);
    response=(HttpWebResponse)request.GetResponse();
    stream=response.GetResponseStream();
    reader=new StreamReader(stream,System.Text.Encoding.Default);
    ds=new DataSet();
    ds.ReadXmlSchema(schema);
    ds.ReadXml(reader);
    stream.Close();
    }
    catch (Exception e)
    {
    throw new Exception("向"+url+"发送请求时出错:"+e.ToString());
    }
    return ds;
    }传入参数为对方的http请求
      

  8.   

    public static string  PostModel(string strUrl, string strParm)
    {
    Encoding encode = System.Text.Encoding.Default;
     
    byte[] arrB = encode.GetBytes(strParm);
      
    HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(strUrl);
    myReq.Method = "POST" ;
    myReq.ContentType = "application/x-www-form-urlencoded"; 
    myReq.ContentLength = arrB.Length;
    Stream outStream = myReq.GetRequestStream();            
    outStream.Write(arrB,0,arrB.Length);
    outStream.Close();
    WebResponse myResp = null;
    try
    {
    //接收HTTP做出的响应
    myResp = myReq.GetResponse();
    }
    catch(Exception e)
    {
    int ii =0;
    }
    Stream ReceiveStream = myResp.GetResponseStream();                
    StreamReader readStream = new StreamReader( ReceiveStream, encode );
    Char[] read = new Char[256];
    int count = readStream.Read( read, 0, 256 );
    string str = null;
    while (count > 0) 
    {
    str += new String(read, 0, count);
    count = readStream.Read(read, 0, 256);

    readStream.Close();
    myResp.Close();
    return str;
    }
      

  9.   

    send.aspx中的部分代码:
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    this.GetHtmlString("http://127.0.0.1/test/Get.aspx","<data>aa</data>");
    }#region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }/// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregionprivate string GetHtmlString(string sUrl,string postData)
    {
    string sHtml = "";
    HttpWebRequest request;
    HttpWebResponse response=null;
    Stream stream = null;
    try
    {
    request = (HttpWebRequest)WebRequest.Create(sUrl);
    request.Method = "POST";
    request.ContentType="application/x-www-form-urlencoded";
    Encoding encoding = Encoding.GetEncoding("GB2312");
    byte[] data = encoding.GetBytes(postData);
    request.ContentLength = data.Length;
    Stream _stream=request.GetRequestStream();
    _stream.Write(data,0,data.Length);
    response=(HttpWebResponse)request.GetResponse();
    stream = response.GetResponseStream();
    sHtml=new StreamReader(stream,System.Text.Encoding.Default).ReadToEnd();
    }
    catch (Exception e)
    {
    string aa = e.Message;
    if (response!=null) response.Close();
    }
    if(stream != null) stream.Close();
    if(response != null) response.Close();
    return sHtml;
    }
    Get.aspx的部分代码:
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    XmlDocument doc =new XmlDocument();
    string xmlstr="";
    try
    {
    Stream _stream = Request.InputStream;
    _stream.Position=0;
    xmlstr = new StreamReader(_stream,System.Text.Encoding.Default).ReadToEnd();
    Response.Write(xmlstr);
    }
    catch(Exception err)
    {
    Response.Write(err.Message);
    }
    }xmlstr就是发送过来的XML串.或者可以直接用
    XmlDocument doc =new XmlDocument();
    doc.Load(Request.InputStream());//获得XmlDocument 对象注意在Get.aspx中设置validateRequest=false
      

  10.   

    把XML直接转成DataSet就行了,然后调用WebService把DataSet传进去,.net已经为你做好了,何必还自己实现呢.
      

  11.   

    把XML直接转成DataSet就行了,然后调用WebService把DataSet传进去,.net已经为你做好了,何必还自己实现呢.----------------------------
    对方的系统是Delphi实现的!他们就提供一个XML流给我。