我正在尝试配置SOAP UI以通过REST API访问Marklogic RDF数据。
ML api中的示例在curl中给出为:
curl --anyauth --user admin:admin -i -X POST \
--data-binary @./booktitle.sparql \
-H "Content-type:application/sparql-update" \
-H "Accept:application/sparql-results+xml" \
http://localhost:8000/v1/graphs/sparql
因此,在Soap UI 4.6.4中,我添加了两个标题:
Accept: application/rdf+xml
Content-Type: application/sparql-query
和内容类型为 application/sparql-query
添加了query.sparql文件作为具有查询的附件,如下所示:
#file name query.sparql
PREFIX db: <http://dbpedia.org/resource/>
PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX xs: <http://www.w3.org/2001/XMLSchema#>
SELECT ( CONCAT(?G, " ", ?S) AS ?name )
WHERE { db:A._J._Langer foaf:givenName ?G ; foaf:surname ?S }
并在身份验证选项卡中提供了用户名和密码,并尝试了基本身份验证和抢先身份验证。但是当遇到POST请求时,出现以下错误:
2015:ERROR:org.apache.http.client.ClientProtocolException
org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:822)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport$Helper.execute(HttpClientSupport.java:238)
at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport.execute(HttpClientSupport.java:348)
at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.submitRequest(HttpClientRequestTransport.java:318)
at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:232)
at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:123)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity.
at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:611)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:454)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
... 11 more
肥皂ui的http日志说:
Fri Mar 20 11:46:53 IST 2015:DEBUG:<< "<error-response xmlns='http://marklogic.com/xdmp/error'>[\n]"
Fri Mar 20 11:46:53 IST 2015:DEBUG:<< " <status-code>401</status-code>[\n]"
Fri Mar 20 11:46:53 IST 2015:DEBUG:<< " <status>Unauthorized</status>[\n]"
Fri Mar 20 11:46:53 IST 2015:DEBUG:<< " <message>401 Unauthorized</message>[\n]"
Fri Mar 20 11:46:53 IST 2015:DEBUG:<< "</error-response>[\n]"
尽管使用相同的设置,但我仍然可以看到HttpRequester(Firefox)的响应。
我是否需要在Soap ui中进行一些其他设置。
您正在使用什么应用服务器?
如果它的应用程序服务是一个(端口8000),则您需要使用摘要身份验证。
您可以将其更改为基本版本以使其更容易使用,但它的安全性较差,但是如果不用于生产,则应该可以。
只需转到左侧导航栏上的管理cp(端口8001),转到组->默认->应用程序服务器->应用程序服务(或您要更改的任何服务器),然后查找身份验证下拉列表并进行更改到基本级别或应用程序级别(如果要进行应用程序级别,则必须将默认用户设置为要测试的用户)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句