func (p *THTTPClient) Read(buf []byte) (int, error) {
	if p.response == nil {
		return 0, thrift.NewTTransportException(
			thrift.NOT_OPEN,
			"Response buffer is empty, no request.",
		)
	}

	n, err := p.response.Body.Read(buf)
	if n > 0 && (err == nil || err == io.EOF) {
		return n, nil
	}

	return n, thrift.NewTTransportExceptionFromError(err)
}
func (p *THTTPClient) doRequest() (*http.Response, error) {
	client := &http.Client{Timeout: p.timeout}
	req, err := http.NewRequest("POST", p.url.String(), p.requestBuffer)
	if err != nil {
		return nil, thrift.NewTTransportExceptionFromError(err)
	}
	p.header.Add("Content-Type", "application/x-thrift")
	req.Header = p.header

	response, err := client.Do(req)

	if err != nil {
		return nil, thrift.NewTTransportExceptionFromError(err)
	}

	if response.StatusCode != http.StatusOK {
		return nil, thrift.NewTTransportException(
			thrift.UNKNOWN_TRANSPORT_EXCEPTION,
			"HTTP Response code: "+strconv.Itoa(response.StatusCode),
		)
	}

	return response, nil
}