Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.IllegalArgumentException:无效的uri'/赋值/rest/words/{name}/protection';:转义绝对路径无效_Java_Spring_Web Services_Rest - Fatal编程技术网

java.lang.IllegalArgumentException:无效的uri'/赋值/rest/words/{name}/protection';:转义绝对路径无效

java.lang.IllegalArgumentException:无效的uri'/赋值/rest/words/{name}/protection';:转义绝对路径无效,java,spring,web-services,rest,Java,Spring,Web Services,Rest,我有SpringRESTfulWeb服务,它与postman(chrome中的插件)配合使用,URL({name}/protection)需要一个名为“name”的参数 我也用java编写了httpclient。使用以下代码 HttpClient client = new HttpClient(); PostMethod method = new PostMethod("http://localhost:8080/Assignment/rest/words/{name}/protection"

我有SpringRESTfulWeb服务,它与postman(chrome中的插件)配合使用,URL({name}/protection)需要一个名为“name”的参数

我也用java编写了httpclient。使用以下代码

HttpClient client = new HttpClient();

PostMethod method = new PostMethod("http://localhost:8080/Assignment/rest/words/{name}/protection");
method.setParameter("name", "value");

    byte[] responseBody = null;
    int statusCode = 0;
    try {
        // Executing method.
        statusCode = client.executeMethod(method);
        }catch(Exception e){}
        // checking status code
        if (statusCode != HttpStatus.SC_OK) {
            System.err.println("Method failed: " + method.getStatusLine());
        }

        // Reading response body.
        responseBody = method.getResponseBody();
on
statusCode=client.executeMethod(方法)其错误显示如下

java.lang.IllegalArgumentException: Invalid uri 'http://localhost:8080/Assignment/rest/words/{name}/protection': escaped absolute path not valid    org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:222)    org.apache.commons.httpclient.methods.ExpectContinueMethod.<init>(ExpectContinueMethod.java:93)     org.apache.commons.httpclient.methods.EntityEnclosingMethod.<init>(EntityEnclosingMethod.java:119)  org.apache.commons.httpclient.methods.PostMethod.<init>(PostMethod.java:106)    com.aspose.talib.service.WordService.getDataFromURL(WordService.java:50)    com.aspose.talib.service.WordService.postRequestForProtectData(WordService.java:37)     com.aspose.talib.web.WordController.init(WordController.java:21)    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)   java.lang.reflect.Method.invoke(Method.java:606)    javax.el.BeanELResolver.invoke(BeanELResolver.java:183)     javax.el.CompositeELResolver.invoke(CompositeELResolver.java:161)   org.apache.el.parser.AstValue.getValue(AstValue.java:173)   org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)    com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)  javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)  javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)  javax.faces.component.UIOutput.getValue(UIOutput.java:174)  com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)     com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)  javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)   javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)  javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)  javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)  com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)     com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)   com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)   com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)   com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)    javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
java.lang.IllegalArgumentException:无效uri'http://localhost:8080/Assignment/rest/words/{name}/protection':转义的绝对路径无效org.apache.commons.httpclient.HttpMethodBase。(HttpMethodBase.java:222)org.apache.commons.httpclient.methods.ExpectContinueMethod。(ExpectContinueMethod.java:93)org.apache.commons.httpclient.methods.EntityEnclosingMethod.(EntityEnclosingMethod.java:119)org.apache.commons.httpclient.methods.PostMethod.(PostMethod.java:106)com.aspose.talib.service.WordService.getDataFromURL(WordService.java:50)com.aspose.talib.service.WordService.postRequestForProtectData(WordService.java:37)com.aspose.talib.web.WordController.init(WordController.java:21)sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:606)javax.el.BeanELResolver.invoke(BeanELResolver.java:183)javax.el.CompositeELResolver.invoke(compositeeelresolver.java:161)org.apache.el.parser.AstValue.getValue(AstValue.java:173)org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)com.sun.faces.facelets.el.TagValueExpression.getValue.getValue(TagValueExpression.java:109)javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)javax.faces.ComponentStateHelper.eval(ComponentStateHelper.java:182)javax.faces.component.UIOutput.getValue(UIOutput.java:174)com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)javax.faces.component.UIComponent.UIComponent.encall(UIComponent.java:1863)javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

请帮助

最好先使用URLBuilder,然后将生成的URL分配给构造函数参数:


URIBuilder URIBuilder=new URIBuilder();

显然,在
URI
中不允许使用大括号之类的字符。您必须对该部分进行编码

试着这样做:

PostMethod method = new PostMethod(URIUtil.encodePath("http://localhost:8080/Assignment/rest/words/{name}/protection", "UTF-8"));
method.setParameter("name", "value");
URIUtil
来自
commons-httpclient-3.1

    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency>

commons httpclient
commons httpclient
3.1

它显示java.net.URISyntaxException:索引44处路径中的非法字符:{name}/protection看起来像
PostMethod.setParameter()
PostMethod.toString()
未按预期工作。即,未设置参数。您能告诉我该类的完全限定名吗?我使用URIBuilder进行编码,它给出了400个错误请求,非常好