All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.dreamlu.mica.http.HttpResponse Maven / Gradle / Ivy

There is a newer version: 3.3.2
Show newest version
/*
 * Copyright (c) 2019-2029, Dreamlu ([email protected] & www.dreamlu.net).
 * 

* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.gnu.org/licenses/lgpl.html *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.dreamlu.mica.http; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import net.dreamlu.mica.core.utils.Exceptions; import net.dreamlu.mica.core.utils.JsonUtil; import okhttp3.*; import okhttp3.internal.Util; import javax.annotation.Nullable; import java.io.Closeable; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import java.util.Map; /** * ok http 封装,相应结构体 * * @author L.cm */ public class HttpResponse implements ResponseSpec, Closeable { private final Request request; private final Response response; private final ResponseBody body; HttpResponse(final Response response) { this.request = response.request(); this.response = response; this.body = ifNullBodyToEmpty(response.body()); } @Override public int code() { return response.code(); } @Override public String message() { return response.message(); } @Override public boolean isOk() { return response.isSuccessful(); } @Override public boolean isRedirect() { return response.isRedirect(); } @Override public Headers headers() { return response.headers(); } @Override public List cookies() { return Cookie.parseAll(request.url(), this.headers()); } @Override public Request rawRequest() { return this.request; } @Override public Response rawResponse() { return this.response; } @Override public ResponseBody rawBody() { return this.body; } @Override public String asString() { try { return body.string(); } catch (IOException e) { throw Exceptions.unchecked(e); } } @Override public byte[] asBytes() { try { return body.bytes(); } catch (IOException e) { throw Exceptions.unchecked(e); } } @Override public InputStream asStream() { return body.byteStream(); } @Override public JsonNode asJsonNode() { return JsonUtil.readTree(asBytes()); } @Override public T asValue(Class valueType) { return JsonUtil.readValue(asBytes(), valueType); } @Override public T asValue(TypeReference typeReference) { return JsonUtil.readValue(asBytes(), typeReference); } @Override public List asList(Class valueType) { return JsonUtil.readList(asBytes(), valueType); } @Override public Map asMap(Class keyClass, Class valueType) { return JsonUtil.readMap(asBytes(), keyClass, valueType); } @Override public Map asMap(Class valueType) { return this.asMap(String.class, valueType); } @Override public File toFile(File file) { toFile(file.toPath()); return file; } @Override public Path toFile(Path path) { try { Files.copy(this.asStream(), path); return path; } catch (IOException e) { throw Exceptions.unchecked(e); } } @Override public MediaType contentType() { return body.contentType(); } @Override public long contentLength() { return body.contentLength(); } @Override public String toString() { return response.toString(); } private static ResponseBody ifNullBodyToEmpty(@Nullable ResponseBody body) { return body == null ? Util.EMPTY_RESPONSE : body; } @Override public void close() throws IOException { Util.closeQuietly(this.body); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy