commons-httpclient-3.0.jar에서 commons-httpclient-3.1.jar 으로 전달해야하지만 jar 파일을 변경하면 내 코드가 더 이상 작동하지 않습니다. 문제는 새 라이브러리가 전달 된 URI를 자동으로 인코딩한다는 것입니다. 이것을 피할 방법이 있습니까? 야후 API와 상호 작용해야하며 URI를 인코딩하면 안됩니다. 그렇지 않으면 서비스에 액세스 할 수 없습니다. 여기에 내 코드의 흠집이 있습니다. 두 개의 인쇄 라인을 비교하여 전달 된 URI와 사용 된 URI의 차이를 관찰합니다.commons-httpclient-3.X.jar을 사용한 Java 문제
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 particolarly
:
% 26 & oauth_version -> % 2526,403,210 oauth_version
및
xoauth_lang_pref = "EN을-우리를"-> xoauth_lang_pref = % 22en - 우리에게 22 %
팁 주셔서 대단히 감사합니다! 이게 내 문제를 해결했습니다! 나는 결코 전에 tought가 아니기 때문에 나는 어리 석다! :-) – AndyPower