我尝试将处理器写入如下
package com.example.demo;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TokenProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
// TODO Auto-generated method stub
exchange.
System.out.println(exchange.getIn().getBody());
Message out = exchange.getOut();
Map<String,Object> map=new HashMap<String,Object>();
map.put(Exchange.HTTP_METHOD,"POST" );
map.put(Exchange.CONTENT_TYPE,"application/x-www-form-urlencoded" );
TokenInput tokeninput=exchange.getIn().getBody(TokenInput.class);
System.out.println("Tokeninput="+tokeninput);
// map.put("client_id",tokeninput.getClient_id());
// map.put("scope",tokeninput.getScope());
// map.put("code",tokeninput.getCode());
// map.put("redirect_uri",tokeninput.getRedirect_uri());
// map.put("grant_type",tokeninput.getGrant_type());
// map.put("client_secret",tokeninput.getClient_secret());
ObjectMapper obj=new ObjectMapper();
String jsonStr=obj.writeValueAsString(tokeninput);
//InputStream convertValue = obj.convertValue(tokeninput, Byte.class);
out.setHeaders(map);
//String encode = URLEncoder.encode(tokeninput.toString(),"utf-8");
out.setBody(exchange.getIn().getBody());
}
}
Gettring错误
NotypeConversionAvailableException:没有类型转换器可用于将类型:com.example.demo.TokenInput转换为所需类型:java.io.InputStream,其值为com.example.demo.TokenInput@ea2c54c at org.apache.camel.impl.converterregistry.mandatoryConvertto(BasetypeConverterRegistry.java:181)~[camel-core-2.12.0.jar:2.12.0]at:2.12.0]在org.apache.camel.processor.convertBodyProcessor.process(convertBodyProcessor.java:78)~[camel-core-2.12.0.jar:2.12.0]
我在camel应用程序中广泛使用它,如下所示。
.removeHeaders("*")
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.setHeader(Exchange.CONTENT_TYPE, constant("application/x-www-form-urlencoded"))
.setBody(simple("grant_type=refresh&client_id=1233232&client_secret=mysecret"))
.to("http://google.com");
我有一个api要求在标题中发送以下参数- 内容类型-应用程序/x-www. form-urlencoded AuthKey-(会话令牌) 以及正文中的以下参数(表单日,即键值对) storeId-1 类型-产品 类别ID-324 但是每当我点击这个api,我总是得到401(未授权)错误。我已经尝试使用MultipartRequest正文和formBody,我知道这与正文无关(它的头,我需要发送内容
当我将RequestHeader设置为Content-type=“application/json”时,它将变为“application/x-www-form-urlencoded”,并且我得到了不支持的媒体类型错误(无效的内容类型:application/x-www form-urlencoded) 我的RestController代码: 我的javascript函数:
我试图访问这个REST API,它接受三个参数:,,我在AngularJS中这样做: 但我总是这样: 对象{data:“{”result:“false”},状态:200,配置:Object,状态文本:“OK”,标题:function} 或者 {"data":"{\"结果\":\"false\"}","状态": 200,"配置":{"方法":"POST","transformRequest":[nu
我们的服务器在POST调用中需要“application/x-www-form-urlencoded”内容类型,但当我将标题设置为“application/x-www-form-urlencoded”时,它返回400个错误请求。以下是我使用HttpPost的代码: 这是我使用HttpsUrlConnection的代码: 这是Charles Proxy的请求。您可以看到,尽管我在这两种情况下都将内容
我需要通过内容类型为的发布一个对象(例如,不是)。当我试着这么做的时候... ...我得到以下错误: RestClientException:无法写入请求:找不到适合请求类型[com.whatever.myRequestPayload]和内容类型[application/x-www-form-urlencoded]的HttpMessageConverter 以下是我在中看到的内容: 为什么我不想提
当内容类型为application/json时,@RequestBody可以读取请求主体并将其反序列化为对象,但内容类型为application/x-www-form-urlencoded,spring mvc无法支持带有@RequestBody注释的此内容类型。 在我的项目中,我遇到了这个问题,我想同时支持他们两个,但我不想失去@quiestBody的便利性。 有没有另一种方法来支持这两种内容类