【问题标题】:How do I send structured data (XML) & a .docx from a website POST to a c# desktop app如何将结构化数据 (XML) 和 .docx 从网站 POST 发送到 c# 桌面应用程序
【发布时间】:2016-05-24 19:54:03
【问题描述】:

我有一个在 Visual Studio 中编码的 C# 桌面应用程序,以及一个要求 20 个信息字段并允许用户附加 .pdf 或 .docx 文件的网站。我有一个我编写的 XML 解析器,它接收单个用户的信息,对其进行处理并在 C# 应用程序上使用它。 .pdf 和 .docx 与 XML 捆绑在同一个文件夹中,因此我只需调用 .pdf 和 .docx 文件的路径即可使用它们。

我在想 XML 是用一个 PHP 脚本制作的,它只在按下按钮时执行,然后将它保存在网站服务器上的某个位置。 C# 工具需要能够获取该文件夹并获取 XML 并在需要时下载 .pdf 和 .docx。

我从未组合过跨平台,这是一个新项目,我正在使用 Selenium C# web-automation library 来自动化使用来自每个 XML 的数据。它将完成对 XML 的处理,进行 8 小时长的处理循环,然后在需要时将下一个 XML 放入队列中。

我想了解如何从网站的表单转到 C# 应用程序。返回响应并不是真正需要的,但是要知道 XML 文档在正在处理的 XML 队列中的哪个顺序将在之后进行。

SOAP/Restful 技术在这方面似乎是一个好主意,因为我认为我不需要在这里重新发明轮子,但它们似乎都是有效的。

【问题讨论】:

    标签: c# php web-services rest soap


    【解决方案1】:

    如果我理解正确,您需要跨平台发送文件,您可以通过编码和解码发送字节流,如下所示:

    C# 编码

    Byte[] bytes = File.ReadAllBytes("c:\file.pdf");
    String file = Convert.ToBase64String(bytes);
    

    C# 解码

    Byte[] bytes = Convert.FromBase64String(b64Str);
    File.WriteAllBytes("c:\file.pdf", bytes);
    

    PHP 编码

    $b64Doc = chunk_split(base64_encode(file_get_contents("c:\file.pdf")));
    

    PHP 解码

    $pdf_base64 = "base64string";
    //Get File content from txt file
    $pdf_base64_handler = fopen($pdf_base64,'r');
    $pdf_content = fread ($pdf_base64_handler,filesize($pdf_base64));
    fclose ($pdf_base64_handler);
    //Decode pdf content
    $pdf_decoded = base64_decode ($pdf_content);
    //Write data back to pdf file
    $pdf = fopen ('"c:\file.pdf','w');
    fwrite ($pdf,$pdf_decoded);
    //close output file
    fclose ($pdf);
    echo 'Done';
    

    【讨论】:

    • 如果我在同一台计算机上托管网站,这似乎很棒。运行 php 脚本的网站在别处,我只能访问该网站 /root 的 /private 目录。这看起来很棒,但我需要弄清楚如何将网站表单连接到 c#。我想我错过了解码的工作原理,因为我认为这就是我需要它来读取文件的方式。谢谢
    猜你喜欢
    • 2018-08-19
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多