コード例 #1
0
        public static capex.http.HTTPClientRequest forGET(string url)
        {
            var v = new capex.http.HTTPClientRequest();

            v.setMethod("GET");
            v.setUrl(url);
            return(v);
        }
コード例 #2
0
 public static void execute(capex.http.HTTPClient client, capex.http.HTTPClientRequest request, capex.http.HTTPClientListener listener)
 {
     if (!(client != null))
     {
         return;
     }
     client.executeRequest(request, listener);
 }
コード例 #3
0
        public static void executeForString(capex.http.HTTPClient client, capex.http.HTTPClientRequest request, System.Action <capex.http.HTTPClientResponse, string> listener)
        {
            var ll = new capex.http.HTTPClient.MyListener();

            capex.http.HTTPClient.execute(client, request, (capex.http.HTTPClientListener)ll);
            if (listener != null)
            {
                listener(ll.getResponse(), cape.String.forUTF8Buffer(ll.getBuffer()));
            }
        }
コード例 #4
0
        public static void execute(capex.http.HTTPClient client, capex.http.HTTPClientRequest request, System.Action <capex.http.HTTPClientResponse> listener)
        {
            var ll = new capex.http.HTTPClient.MyListener();

            capex.http.HTTPClient.execute(client, request, (capex.http.HTTPClientListener)ll);
            if (listener != null)
            {
                listener(ll.getResponse());
            }
        }
コード例 #5
0
 public bool openConnection(capex.http.HTTPClientRequest request, capex.http.HTTPClientListener listener)
 {
     if (request == null)
     {
         if (listener != null)
         {
             listener.onError("No request");
         }
         return(false);
     }
     return(openConnection(request.getProtocol(), request.getServerAddress(), request.getServerPort(), listener));
 }
コード例 #6
0
 public override void executeRequest(capex.http.HTTPClientRequest request, capex.http.HTTPClientListener listener)
 {
     if (!sendRequest(request, listener))
     {
         return;
     }
     if (!readResponse(listener, 30000))
     {
         return;
     }
     if (object.Equals(request.getHeader("connection"), "close"))
     {
         closeConnection(listener);
     }
 }
コード例 #7
0
        public static capex.http.HTTPClientRequest forPOST(string url, string mimeType, byte[] data)
        {
            var v = new capex.http.HTTPClientRequest();

            v.setMethod("POST");
            v.setUrl(url);
            if (cape.String.isEmpty(mimeType) == false)
            {
                v.addHeader("Content-Type", mimeType);
            }
            if (data != null)
            {
                v.setBody((cape.SizedReader)cape.BufferReader.forBuffer(data));
            }
            return(v);
        }
コード例 #8
0
 public virtual bool onStartRequest(capex.http.HTTPClientRequest request)
 {
     return(true);
 }
コード例 #9
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);
        }
コード例 #10
0
 public abstract void executeRequest(capex.http.HTTPClientRequest request, capex.http.HTTPClientListener listener);