Java 改装2.0 beta1:如何发布原始管柱体
我正在寻找一些方法,以后与新的改装2.0b1的原始机构的要求。大概是这样的:Java 改装2.0 beta1:如何发布原始管柱体,java,android,retrofit,Java,Android,Retrofit,我正在寻找一些方法,以后与新的改装2.0b1的原始机构的要求。大概是这样的: @POST("/token") Observable<TokenResponse> getToken(@Body String body); public class StringConverter implements Converter<Object>{ @Override public String fromBody(ResponseBody bo
@POST("/token")
Observable<TokenResponse> getToken(@Body String body);
public class StringConverter implements Converter<Object>{
@Override
public String fromBody(ResponseBody body) throws IOException {
return ByteString.read(body.byteStream(), (int) body.contentLength()).utf8();
}
@Override
public RequestBody toBody(Object value) {
return RequestBody.create(MediaType.parse("text/plain"), value.toString());
}
}
@POST(“/token”)
可观察的getToken(@Body-String-Body);
据我所知,应该有一些海峡“字符串”转换器,但我还不清楚它是如何工作的
在1.9版中,有很多方法可以通过TypedInput实现这一点,但在2.0版中它不再有用。当您使用
addConverter(Type,converter)
构建改型时,您应该为类型注册一个转换器
Converter
在2.0中使用了类似的方法,在1.x版本中使用了旧的Converter
您的StringConverter
应该是这样的:
@POST("/token")
Observable<TokenResponse> getToken(@Body String body);
public class StringConverter implements Converter<Object>{
@Override
public String fromBody(ResponseBody body) throws IOException {
return ByteString.read(body.byteStream(), (int) body.contentLength()).utf8();
}
@Override
public RequestBody toBody(Object value) {
return RequestBody.create(MediaType.parse("text/plain"), value.toString());
}
}
公共类StringConverter实现转换器{
@凌驾
来自body(ResponseBody body)的公共字符串引发IOException{
返回ByteString.read(body.byteStream(),(int)body.contentLength()).utf8();
}
@凌驾
公共请求主体到主体(对象值){
返回RequestBody.create(MediaType.parse(“text/plain”)、value.toString();
}
}
注:
ByteString
来自Okio库李>
注意MediaType中的Charset
在改型2中,您可以使用RequestBody
和ResponseBody
使用String
数据将正文发布到服务器,并从服务器的响应正文中读取为String
首先,您需要在服务中声明一个方法:
interface RetrofitService {
@POST("path")
Call<ResponseBody> update(@Body RequestBody requestBody);
}
最后发出一个请求,并将响应正文读取为字符串
:
try {
Response<ResponseBody> response = call.execute();
if (response.isSuccess()) {
String strResponseBody = response.body().string();
}
} catch (IOException e) {
// ...
}
试试看{
Response=call.execute();
if(response.issucess()){
String strResponseBody=response.body().String();
}
}捕获(IOE异常){
// ...
}
我也刚刚找到了如何做到这一点。谢谢非常感谢你。很好的解决方案这应该是正确的答案。