我正在尝试使用我的基于pl/sql的内容管理系统的BloggerAPI从Flickr实现"blog this“功能。
当Flickr向我发送posting事务时,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 <a href="http://www.flickr.com/r/testpost"><img alt="flickr" src="http://www.flickr.com/images/flickr_logo_blog.gif" width="41" height="18" border="0" align="absmiddle" /></a>, a fancy photo sharing thing.</string></value></param>
<param><value><boolean>1</boolean></value></param>
</params>
</methodCall>
但是我的服务器正在响应一个HTTP-400 Bad request,错误消息是"Signature Mismatch or Missing '='“,并且我的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数据?或者是我忽略的其他方法?
谢谢,马克。
发布于 2009-09-18 16:41:45
我向Oracle提交了一个服务请求,他们确认mod_plsql不支持检索httpheader变量。这是我在SR上的讨论:
问题分析
我需要确认这一点,但是Mark结论在我看来是正确的,即MOD_PLSQL总是调用和处理PLSQL过程,并且没有办法读取原始的HTTP请求,因为MOD_PLSQL解析请求并检查是否存在具有该名称的PLSQL过程,以及是否有要传递的参数。如果没有要传递的参数,但我们提供了其他内容,比如XML文档,则MODPLSQL会感到困惑,并认为这是一对新的参数和值,而事实并非如此。
回答
不,这是不可能的,因为MOD_PLSQL只处理带有参数的请求,这些参数可以被解析和转换为带有几个参数的PLSQL过程调用。MOD_PLSQL没有像HTTPRequest对象那样包含整个请求的"httprequest“变量的概念
问题分析
除非我们将其作为参数传递,否则无法从MOD_PLSQL中读取它。换句话说,如果我们在HTTP请求主体中传递XML页面,我们需要使用类似java的东西,我们可以在raw模式下处理请求,并且我们可以读取任何HTTP头部和http主体,而不受任何类型的限制。
发布于 2009-11-19 00:48:27
xml可以作为文件附件发送吗?换句话说,改变:
Content-Type: text/xml; charset=utf-8
至
Content-Type: multipart/form-data, boundary=AaB03x
然后在xml之前添加以下内容:
--AaB03x content-disposition: form-data; name="xmlfile"; filename="myfile.xml"
Content-Type: text/xml
下面是xml之后的内容:
--AaB03x--
现在,您设置了文件上载的过程,如本文所述:Files, Uploads, and Downloads with Web PLSQL
发布于 2009-01-17 00:09:11
使用UTL_HTTP
您可以使用UTL_HTTP包来完成此操作。
UTL_HTTP.read_text(
r IN OUT NOCOPY resp,
data OUT NOCOPY VARCHAR2,
len IN PLS_INTEGER DEFAULT NULL);
“UTL_HTTP包支持HTTP1.1分块传输编码,当响应头中指示的响应body以分块传输编码格式返回时,包会自动解码分块,并以去分块格式返回响应body。”
http://download.oracle.com/docs/cd/B10500_01/appdev.920/a96612/u_http.htm
https://stackoverflow.com/questions/452475
复制相似问题