コード例 #1
0
        public bool sendRequest(capex.http.HTTPClientRequest request, capex.http.HTTPClientListener listener)
        {
            if (request == null)
            {
                if (listener != null)
                {
                    listener.onError("No request");
                }
                return(false);
            }
            if (listener != null && listener.onStartRequest(request) == false)
            {
                return(false);
            }
            if (openSocket != null)
            {
                if (!(object.Equals(request.getServerAddress(), openSocketAddress)) || !(object.Equals(request.getProtocol(), openSocketProtocol)) || request.getServerPort() != openSocketPort)
                {
                    closeConnection(listener);
                }
            }
            if (openSocket == null)
            {
                openConnection(request, listener);
                if (!(openSocket != null))
                {
                    return(false);
                }
            }
            if (listener != null)
            {
                listener.onStatus("Sending request headers ..");
            }
            var rqs = request.toString(defaultUserAgent);
            var pww = cape.PrintWriterWrapper.forWriter((cape.Writer)openSocket);
            var whr = pww.print(rqs);

            if (listener != null)
            {
                listener.onStatus(null);
            }
            if (whr == false)
            {
                if (listener != null)
                {
                    listener.onError("Failed to send HTTP request headers");
                }
                closeConnection(listener);
                return(false);
            }
            var body = request.getBody();

            if (body != null)
            {
                if (listener != null)
                {
                    listener.onStatus("Sending request body ..");
                }
                var rv = true;
                var bf = new byte[4096 * 4];
                while (true)
                {
                    var r = body.read(bf);
                    if (r < 1)
                    {
                        break;
                    }
                    if (openSocket.write(bf, r) < r)
                    {
                        if (listener != null)
                        {
                            listener.onError("Failed to send request body");
                        }
                        closeConnection(listener);
                        rv = false;
                        break;
                    }
                }
                if (listener != null)
                {
                    listener.onStatus(null);
                }
                if (rv == false)
                {
                    return(false);
                }
            }
            return(true);
        }