当前位置: 首页 > 知识库问答 >
问题:

超文本传输协议OAuth响应错误

东门茂实
2023-03-14
@Override
protected Boolean doInBackground(Void... params) {
    // TODO Auto-generated method stub


        HttpClient httpclient = new DefaultHttpClient();  
        Log.d("HTTP","Exe");
        String sw=Sign(token);
        Log.d("HTTP","Exe");

        HttpPost httpPost;
        Log.d("HTTP","Exec");
        httpPost = new HttpPost(sw);
        Log.d("HTTP","Execute");

        HttpResponse response;
        try 
        {

            Log.d("HTTP","Executed");
//**THIS IS WHERE IT STOPS EXECUTION**

                response = httpclient.execute(httpPost); // the request executes
                Log.d("HTTP","Executed");
                HttpEntity entity = response.getEntity();
                InputStream is = entity.getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 256);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null)  sb.append(line); 
                String result = sb.toString();
                is.close();
                Log.d("HTTP",result);
                String  responseBody = EntityUtils.toString(((HttpResponse) response).getEntity());
                retString=responseBody;
                Log.d("HTTP",result);

            } 

            catch (ClientProtocolException e) {
                    e.printStackTrace();
            }
            catch(ConnectTimeoutException e){
                    e.printStackTrace();
            }
            catch (IOException e) {
                    e.printStackTrace();
            }


            //return null;

        return null;
    }

我的LogCat:

06-25 23:45:59.105: D/HTTP(5993): wz27t6thob0fbxl
06-25 23:46:03.223: D/HTTP(5993): Exe
06-25 23:46:03.766: D/HTTP(5993): 1340648163
06-25 23:46:05.378: D/HTTP(5993): https://api.dropbox.com/1/shares/dropbox/a.jpg?oauth_consumer_key=2f2y1dyuqhp58ek&oauth_token=wz27t6thob0fbxl&oauth_nonce=1340648163&oauth_timestamp=1340648163&oauth_signature_method=HMAC-SHA1&oauth_version=1.0&oauth_signature=bo%2F5zuowvX%2Fcjy5uPP5ZPjUiP64%3D%0A
06-25 23:46:05.402: D/HTTP(5993): Exe
06-25 23:46:05.402: D/HTTP(5993): Exec
06-25 23:46:06.132: D/HTTP(5993): Execute
06-25 23:46:09.363: D/HTTP(5993): Executed
06-25 23:46:38.742: D/dalvikvm(5993): GC_FOR_MALLOC freed 5331 objects / 305856 bytes in 400ms
06-25 23:46:51.413: D/HTTP(5993): Executed
06-25 23:46:51.952: D/HTTP(5993): {"error": "Invalid signature. Expected signature base string: POST&https%3A%2F%2Fapi.dropbox.com%2F1%2Fshares%2Fdropbox%2Fa.jpg&oauth_consumer_key%3D2f2y1dyuqhp58ek%26oauth_nonce%3D1340648163%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1340648163%26oauth_token%3Dwz27t6thob0fbxl%26oauth_version%3D1.0"}
06-25 23:47:49.032: W/dalvikvm(5993): threadid=7: thread exiting with uncaught exception (group=0x4001d800)
06-25 23:47:49.462: E/AndroidRuntime(5993): FATAL EXCEPTION: AsyncTask #1
06-25 23:47:49.462: E/AndroidRuntime(5993): java.lang.RuntimeException: An error occured while executing doInBackground()
06-25 23:47:49.462: E/AndroidRuntime(5993):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at java.lang.Thread.run(Thread.java:1096)
06-25 23:47:49.462: E/AndroidRuntime(5993): Caused by: java.lang.IllegalStateException: Content has been consumed
06-25 23:47:49.462: E/AndroidRuntime(5993):     at org.apache.http.entity.BasicHttpEntity.getContent(BasicHttpEntity.java:84)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at org.apache.http.conn.BasicManagedEntity.getContent(BasicManagedEntity.java:100)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at org.apache.http.util.EntityUtils.toString(EntityUtils.java:112)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at org.apache.http.util.EntityUtils.toString(EntityUtils.java:146)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at cloud.mobile.DropboxApi.doInBackground(DropboxApi.java:145)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at cloud.mobile.DropboxApi.doInBackground(DropboxApi.java:1)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
06-25 23:47:49.462: E/AndroidRuntime(5993):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-25 23:47:49.462: E/AndroidRuntime(5993):     ... 4 more

签名密钥(sw)为https://api.dropbox.com/1/shares/dropbox/a.jpg?oauth_consumer_key=2f2y1dyuqhp58ek

我对http没有太多经验。。

因为httpPost=新的httpPost(sw);工作正常,这是否意味着基本字符串签名正确?

还是我错过了什么?

共有1个答案

单于飞鸣
2023-03-14

这似乎与OAuth错误无关。根据以下日志语句,您似乎没有在超文本传输协议post url中设置主机。

Caused by: java.lang.IllegalStateException: Target host must not be null, or set in parameters.
 类似资料:
  • 我只是有一个关于服务中http请求的结构和处理响应的问题。我正在使用Angular2。alpha46 Typescript(刚刚开始测试-我喜欢它…Ps…。感谢所有一直致力于它并通过github作出贡献的人) 因此,采取以下措施: 登录表单。组成部分ts 从这个组件中,我导入了我的userService,它将容纳我的超文本传输协议请求,以登录用户。 使用者服务ts 我想做的是能够处理http请求之

  • 我正在使用下面的代码登录apiendpoint并从中检索数据,但响应似乎已编码,我无法读取内容。我正在使用request-requestes-0.0.1 当我在控制台上打印相同的响应 有人能告诉我如何解码和读取响应中的数据吗

  • 我想知道你对这个概念的看法/意见。如果有替代方案?这是否可行/有益? 据我所知,对于每个http请求,服务器都会执行一些操作并返回http响应。 现在考虑任何场景,我们希望对服务器上运行的进程有更多的控制。 情景1:http请求发送- 在这里,资源被浪费了。 情况2:http请求发送- 在这里,客户端不知道服务器中运行的进程的状态。客户端必须等待,直到它获得超文本传输协议响应。 我的想法是:在初始

  • 我有这个问题: 我需要从服务器下载一个zip文件,这个zip包含。xod和。巴布亚新几内亚。我正在使用AngularJS,JavaSpring,来克服跨域问题,我的htt。获取java spring控制器的角度调用,它将进行真正的get调用。我必须下载zip- 这是我的角度代码: 这是java spring代码: 这是控制台。日志: Object{data:"UEsDBBQACAAIAA5Ipkg

  • 我想在vertx API响应中以CSV文件的形式从DB返回一些数据。我一直在关注这个链接 但是我无法返回正确的CSV文件作为API响应。 我的代码:

  • 我正在努力学习一些关于HTTP的基础知识。我检查了一些HTTP响应头,注意到了两件让我困惑的事情: > 没有缓存控制标头,并且 ETag标头存在。 我理解 ETag 的方式是,客户端将 ETag 中的请求发送到缓存,并且缓存将资源 Etag 与服务器重新验证。但是,如果没有缓存控制标头作为响应,则所有后续请求都直接与服务器进行重新验证并完全省略缓存。是这种情况还是我错过了什么?当响应中不存在缓存控