如何生成带有添加的发布请求的pdf?

问题描述 投票:0回答:1

我有一个旧但有效的应用程序,可以从 url 生成 pdf。我正在尝试修改它以便能够发送帖子请求。

PuppeteerSharp 包已升级至版本 14.1.0。相关代码如下:

await new BrowserFetcher().DownloadAsync(); 
var browser = await Puppeteer.LaunchAsync(new LaunchOptions 
{ 
    Headless = true, 
    IgnoreHTTPSErrors = true 
}); 

var page = await browser.NewPageAsync(); 
try 
{ 
    await page.GoToAsync(url, new NavigationOptions 
    { 
        WaitUntil = new[] { 
            WaitUntilNavigation.Networkidle2 
        } 
    }); 
    await page.PdfAsync(Path.Combine(pdfDirPath, filename), new PdfOptions 
    { 
        Format = PaperFormat.A4, 
        PrintBackground = true 
    }); 
} 
catch (Exception e) 
{ 
    errorMsg.Add($"Error generating pdf: {e.Message}"); 
} 
await browser.CloseAsync();

我想它来自这个例子

提供 pdf 文件的 Web 服务器具有可通过发布请求进行设置的自定义选项。基于这个问题我修改了上面的代码,添加了post请求(星号之间添加了部分):

await new BrowserFetcher().DownloadAsync(); 
var browser = await Puppeteer.LaunchAsync(new LaunchOptions 
{ 
    Headless = true, 
    IgnoreHTTPSErrors = true 
}); 

var page = await browser.NewPageAsync(); 
try 
{
    // *****************************
    await page.SetRequestInterceptionAsync(true);
    page.Request += async (sender, e) =>
    {
        var data = new Payload()
        {
            Url = url,
            Method = System.Net.Http.HttpMethod.Post,
            PostData = "test"
        };
        await e.Request.ContinueAsync(data);
    };
    // ***************************
    await page.GoToAsync(url, new NavigationOptions 
    { 
        WaitUntil = new[] { 
            WaitUntilNavigation.Networkidle2 
        } 
    }); 
    await page.PdfAsync(Path.Combine(pdfDirPath, filename), new PdfOptions 
    { 
        Format = PaperFormat.A4, 
        PrintBackground = true 
    }); 
} 
catch (Exception e) 
{ 
    errorMsg.Add($"Error generating pdf: {e.Message}"); 
} 
await browser.CloseAsync();

现在,当我使用此代码时,我得到一个空白 pdf 文件,其中仅包含文本“Cannot POST /”,并且不知道该怎么办。

post puppeteer-sharp
1个回答
0
投票

网络服务器似乎不接受 POST 请求。我的错。

© www.soinside.com 2019 - 2024. All rights reserved.