コード例 #1
0
        public UserBody(Env env,
                        CurlResource curl,
                        Callable callback, BinaryInput file, long length)
        {
            _curl = curl;

            _callback = callback;
            _fileV    = env.wrapJava(file);
            _length   = length;
        }
コード例 #2
0
        /**
         * Returns a copy of this resource.
         */
        public CurlResource clone()
        {
            CurlResource curl = new CurlResource();

            curl.setBody(_body);
            curl.setConnectTimeout(_connectTimeoutMs);
            curl.setContentLength(_contentLength);
            curl.setContentType(_contentType);
            curl.setCookie(_cookie);
            curl.setCookieFilename(_cookieFilename);
            curl.setError(_error);
            curl.setErrorCode(_errorCode);
            curl.setFailOnError(_failOnError);
            curl.setHeaderCallback(_headerCallback);
            curl.setHeader(_header);
            curl.setIsFollowingRedirects(_isFollowingRedirects);
            curl.setIfModifiedSince(_ifModifiedSince);
            curl.setIsProxying(_isProxying);
            curl.setIsReturningBody(_isReturningBody);
            curl.setIsReturningData(_isReturningData);
            curl.setIsReturningHeader(_isReturningHeader);
            curl.setIsVerbose(_isVerbose);
            curl.setModifiedTime(_modifiedTime);
            curl.setOutputFile(_outputFile);
            curl.setOutputHeaderFile(_outputHeaderFile);
            curl.setPassword(_password);
            curl.setPasswordCallback(_passwordCallback);
            curl.setPort(_port);
            curl.setPostBody(_postBody);
            curl.setProxyPassword(_proxyPassword);
            curl.setProxyPort(_proxyPort);
            curl.setProxyType(_proxyType);
            curl.setProxyURL(_proxyURL);
            curl.setProxyUsername(_proxyUsername);
            curl.setReadCallback(_readCallback);
            curl.setReadTimeout(_readTimeoutMs);
            curl.setRequestMethod(_requestMethod);

            for (Map.Entry <String, String> entry : _requestProperties.entrySet())
            {
                curl.setRequestProperty(entry.getKey(), entry.getValue());
            }

            curl.setResponseCode(_responseCode);
            curl.setUploadFile(_uploadFile);
            curl.setUploadFileSize(_uploadFileSize);
            curl.setURL(_URL);
            curl.setUsername(_username);
            curl.setWriteCallback(_writeCallback);

            return(curl);
        }
コード例 #3
0
        protected void init(CurlResource curl)

        {
            Proxy proxy = getProxy();

            if (proxy != null)
            {
                setConnection(_url.openConnection(proxy));
            }
            else
            {
                setConnection(_url.openConnection());
            }
        }
コード例 #4
0
        public Value readInfo(Env env, Value msgsInQueue)
        {
            if (_msgQueue.size() == 0)
            {
                return(BooleanValue.FALSE);
            }

            StringValue msgStr    = env.createString("msg");
            StringValue resultStr = env.createString("result");
            StringValue handleStr = env.createString("handle");

            CurlResource curl = _msgQueue.remove(0);

            ArrayValue array = new ArrayValueImpl();

            array.put(msgStr, LongValue.create(CurlModule.CURLMSG_DONE));
            array.put(resultStr, LongValue.create(CurlModule.CURLE_OK));
            array.put(handleStr, curl);

            msgsInQueue.set(LongValue.create(_msgQueue.size()));

            return(array);
        }
コード例 #5
0
        protected override void init(CurlResource curl)

        {
            Proxy proxy = getProxy();

            URLConnection conn;

            HttpsURLConnection httpsConn = null;

            if (proxy != null)
            {
                conn = getURL().openConnection(proxy);
            }
            else
            {
                conn = getURL().openConnection();
            }

            if (conn instanceof HttpsURLConnection)
            {
                httpsConn = (HttpsURLConnection)conn;

                if (!curl.getIsVerifySSLPeer() ||
                    !curl.getIsVerifySSLCommonName() ||
                    !curl.getIsVerifySSLHostname())
                {
                    HostnameVerifier hostnameVerifier
                        = CurlHostnameVerifier.create(curl.getIsVerifySSLPeer(),
                                                      curl.getIsVerifySSLCommonName(),
                                                      curl.getIsVerifySSLHostname());

                    httpsConn.setHostnameVerifier(hostnameVerifier);
                }
            }

            setConnection(conn);
        }
コード例 #6
0
        static PostBody create(Env env, CurlResource curl)
        {
            PostBody post;

            Value    data    = curl.getPostBody();
            Callable bodyFun = curl.getReadCallback();

            BinaryInput file   = curl.getUploadFile();
            long        length = curl.getUploadFileSize();

            if (data == null && bodyFun == null)
            {
                return(null);
            }
            else if (bodyFun != null)
            {
                post = new UserBody(env, curl, bodyFun, file, length);
            }
            else if (data.isArray())
            {
                post = new MultipartBody(env, data);
            }
            else
            {
                post = new UrlEncodedBody(env, data);
            }

            if (post.isValid())
            {
                return(post);
            }
            else
            {
                return(null);
            }
        }
コード例 #7
0
 public CurlHttpRequest(CurlResource curlResource)
 {
     _curl = curlResource;
 }
コード例 #8
0
 public HttpGetRequest(CurlResource curlResource)
 {
     super(curlResource);
 }
コード例 #9
0
        public void removeCurl(CurlResource curl)
        {
            bool isRemoved = _curlList.remove(curl);

            _msgQueue.remove(curl);
        }
コード例 #10
0
 public void addCurl(CurlResource curl)
 {
     _curlList.add(curl);
 }
コード例 #11
0
        /**
         * Transfer data to the server.
         */
        protected void transfer(Env env)

        {
            super.transfer(env);

            CurlHttpConnection conn = getHttpConnection();
            OutputStream       @out = conn.getOutputStream();

            CurlResource curl = getCurlResource();

            try {
                BinaryInput in = curl.getUploadFile();
                long length = curl.getUploadFileSize();

                long totalWritten = 0;

                if (curl.getReadCallback() != null)
                {
                    Callable callback = curl.getReadCallback();

                    Value     fileV   = env.wrapJava(in);
                    LongValue lengthV = LongValue.create(length);

                    while (totalWritten < length)
                    {
                        StringValue str
                            = callback.call(env, fileV, lengthV).ToStringValue(env);

                        int count = str.length();

                        if (count == 0)
                        {
                            break;
                        }

                        str.writeTo(out);

                        totalWritten += count;
                    }
                }
                else
                {
                    byte [] buffer = new byte[1024 * 4];

                    while (totalWritten < length)
                    {
                        int count = in.read(buffer, 0, buffer.length);

                        if (count < 0)
                        {
                            break;
                        }

                        @out.write(buffer, 0, count);

                        totalWritten += count;
                    }
                }
            }
            finally {
                @out.close();
            }
        }
コード例 #12
0
 /**
  * Connects to the server.
  */
 public void connect(CurlResource curl)