Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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 改装2.0 beta1:如何发布原始管柱体_Java_Android_Retrofit - Fatal编程技术网

Java 改装2.0 beta1:如何发布原始管柱体

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

我正在寻找一些方法,以后与新的改装2.0b1的原始机构的要求。大概是这样的:

@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异常){
    // ...
    }
    
    我也刚刚找到了如何做到这一点。谢谢非常感谢你。很好的解决方案这应该是正确的答案。