gpt4 book ai didi

oracle - 如何通过 HTTP Post 事务将 XML 检索到 Oracle PL/SQL 中?

转载 作者:行者123 更新时间:2023-12-04 07:10:26 24 4
gpt4 key购买 nike

我正在尝试使用 BloggerAPI 将 Flickr 中的“博客此”功能实现到我的基于 pl/sql 的 CMS。

当 Flickr 向我发送发布事务时,HTTP 事务如下所示:

POST /pls/website/!pkg.procAPI HTTP/1.1
Host: www.mydomain.com
Accept: */*
User-Agent: Flickr
Content-Type: text/xml; charset=utf-8
Content-Length: 1220
Expect: 100-continue

<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>blogger.newPost</methodName>
<params>
<param><value><string>NO_APP_KEY</string></value></param>
<param><value><string>1</string></value></param>
<param><value><string>markj</string></value></param>
<param><value><string>markj</string></value></param>
<param><value><string>This is a test post from &lt;a href=&quot;http://www.flickr.com/r/testpost&quot;&gt;&lt;img alt=&quot;flickr&quot; src=&quot;http://www.flickr.com/images/flickr_logo_blog.gif&quot; width=&quot;41&quot; height=&quot;18&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; /&gt;&lt;/a&gt;, a fancy photo sharing thing.</string></value></param>
<param><value><boolean>1</boolean></value></param>
</params>
</methodCall>

但是我的服务器正在响应 HTTP-400 错误请求,错误消息是“签名不匹配或缺少‘=’”,我的 pl/sql 过程永远没有机会处理请求。我怀疑在查看消息时,灵活的参数传递会受到影响,但我不知道还有什么办法

获取可用博客的过程似乎工作正常,但请求的内容没有将所有 html 实体作为消息的一部分:
    POST /pls/website/!pkg.procAPI HTTP/1.1
Host: www.mydomain.com
Accept: */*
User-Agent: Flickr
Content-Type: text/xml; charset=utf-8
Content-Length: 304

<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>blogger.getUsersBlogs</methodName>
<params>
<param><value><string>NO-APP-KEY</string></value></param>
<param><value><string>mark</string></value></param>
<param><value><string>markj</string></value></param>
</params>
</methodCall>

有没有办法直接从http请求的正文中获取xml数据?或者我正在寻找的其他方法?

谢谢,
标记。

最佳答案

我向 Oracle 发起了一个服务请求,他们确认 mod_plsql 不支持检索 httpheader 变量。这是我在 SR 上的讨论:

问题分析

我需要确认一下,但到目前为止马克的结论对我来说是正确的,即MOD_PLSQL 始终调用和处理 PLSQL 过程,并且无法读取原始 HTTP 请求,因为 MOD_PLSQL 解析请求并检查是否存在具有此名称的 PLSQL 过程以及是否有要传递的参数。如果没有要传递的参数,但我们提供了诸如 XML 文档之类的其他内容,MODPLSQL 会感到困惑,并认为这是一对新的参数和值,而事实并非如此。

回答

不,这是不可能的,因为 MOD_PLSQL 只是处理带有参数的请求,这些参数可以被解析和转换为带有多个参数的 PLSQL 过程调用。 MOD_PLSQL 没有包含整个请求的“httprequest”变量的概念,就像 java 拥有 HTTPRequest 对象一样

问题分析

得到确认,除非我们将它作为参数传递,否则我们无法从 MOD_PLSQL 读取它。换句话说,如果我们在 HTTP 请求正文中传递 XML 页面,我们需要使用类似 java 的东西,我们可以在原始模式下处理请求,并且我们可以不受任何限制地读取任何 HTTP header 和 http 正文。

关于oracle - 如何通过 HTTP Post 事务将 XML 检索到 Oracle PL/SQL 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/452475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com