Вопрос

Мне нужно перейти от Commons-Httpclient-3.0.jar к Commons-httpclient-3.1.jar, но изменение JAR My Code больше не работает. Проблема в том, что новая библиотека автоматически кодирует пройденную URI. Есть ли способ избежать этого? Я должен взаимодействовать с Yahoo API, и я не должен кодировать URI, иначе я не могу получить доступ к Сервисам. Здесь есть царапина моего кода, сравнивая две линии печати, я наблюдаю разницу между пройденным URI и использованным.

 GetMethod getMethod = new GetMethod();
    try {
        URI uri = new URI(DeliciousApi.generateRequestToken(), false);
        getMethod.setURI(uri);
        System.out.println("Passed URI: " + uri.getURI());
        int statusCode = client.executeMethod(getMethod);
        if (statusCode != HttpStatus.SC_OK) {
            System.out.println("Used URI: " + getMethod.getURI());
            System.err.println("getMethod failed: " + getMethod.getStatusLine());
        }

И это выход:

Passed URI: https://api.login.yahoo.com/oauth/v2/get_request_token?oauth_nonce=ce4630523j788f883f76314ed3965qw9&oauth_timestamp=1277236486&oauth_consumer_key=hd7sHfs5YVFuh3DRTUFgFgF7GcF4RDtsTXStGdRyJJf7WSuShQAShd2JdiwjIibHsU8YFDgshk7hd32xjA6isnNsT7SkbLS8YDHy&oauth_signature_method=plaintext&oauth_signature=53h8x475a66v238j7f43456lhhgg8s7457fwkkdd%26&oauth_version=1.0&xoauth_lang_pref="en-us"&oauth_callback=oob
Used URI:   https://api.login.yahoo.com/oauth/v2/get_request_token?oauth_nonce=ce4630523j788f883f76314ed3965qw9&oauth_timestamp=1277236486&oauth_consumer_key=hd7sHfs5YVFuh3DRTUFgFgF7GcF4RDtsTXStGdRyJJf7WSuShQAShd2JdiwjIibHsU8YFDgshk7hd32xjA6isnNsT7SkbLS8YDHy&oauth_signature_method=plaintext&oauth_signature=53h8x475a66v238j7f43456lhhgg8s7457fwkkdd%2526&oauth_version=1.0&xoauth_lang_pref=%22en-us%22&oauth_callback=oob

GetMethod не удалось: http / 1.1 401 запрещено

Coppia: OAuth_problem Signature_invalid

Пристально:

%26 & oauth_version -> %2526 & oauth_version

и

xoauth_lang_pref = "en-us"-> xoauth_lang_pref =%22en-us%22

Это было полезно?

Решение

Вы можете избежать кодирования, делая это,

      URI uri = new URI(DeliciousApi.generateRequestToken(), true);

Тем не менее, вы можете получить исключение на своем первоначальном URL, который не является должным образом кодируется. Вам нужно кодировать двойные кавычки. Еще лучше, избавьтесь от этого.

Другие советы

Будет использовать seturi ("https://api.login.yahoo.com/oauth/v2/get_request_token«) с последующим SetQueryString (Вставьте строку здесь) Работа? Кажется, я помню, как у меня больше контроля над строкой запроса, делая это таким образом ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top