使用Scribe在LinkedIn中发布消息,向LinkedIn发送消息

以下是发送post消息的代码。 在我的屏幕上,我有一个EditText部分,允许用户输入文本,当他们点击后,调用sendMessage函数。 我一直在回应中得到这个。 我也尝试过URLEncode.encode(有效载荷,“UTF-8”)来获取一个编码的字符串,以便添加到正文并且不起作用。 任何见解都会有所帮助。

04-19 18:24:50.570: D/response(693):  04-19 18:24:50.570: D/response(693): 400 04-19 18:24:50.570: D/response(693): 1334859891007 04-19 18:24:50.570: D/response(693): WJPI8VXQME 04-19 18:24:50.570: D/response(693): 0 04-19 18:24:50.570: D/response(693): Couldn't parse share document: error: Unexpected end of file after null 04-19 18:24:50.570: D/response(693):  

这是代码:

 private static final String SendMessage = "https://api.linkedin.com/v1/people/~/shares"; public void sendMessage(View view) { //Get works just fine //OAuthRequest req = new OAuthRequest(Verb.GET, "http://api.linkedin.com/v1/people/~/connections:(id,last-name)"); //service.signRequest(accessToken, req); //Response res = req.send(); //Log.e("get", res.getBody()); OAuthRequest post = new OAuthRequest(Verb.POST, SendMessage); //Have also tried adding " to the beginning of the payload string String payload = "" + "testing" + "anyone" + ""; post.addBodyParameter("body", payload); post.addHeader("Content-Type", "text/xml;charset=UTF-8"); service.signRequest(accessToken, post); try { Response response = post.send(); Log.d("response",response.getBody()); } catch (Exception e) { e.printStackTrace(); } LinkedInActivity.this.finish(); } 

我的服务被定义为:

 service = new ServiceBuilder() .provider(LinkedInApi.class) .apiKey(API_KEY) .apiSecret(API_SEC) .callback(CALLBACK) .debug() .build(); final Token requestToken = service.getRequestToken(); final String authURL = service.getAuthorizationUrl(requestToken); 

我使用webview来捕获回调以保存validation器/令牌。 示例如下:

 webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url.startsWith("oauth")){ webView.setVisibility(View.GONE); Uri uri = Uri.parse(url); String verifier = uri.getQueryParameter("oauth_verifier"); Verifier v = new Verifier(verifier); //save token accessToken = service.getAccessToken(requestToken, v); if(uri.getHost().equals("linkedIn")){ editText.setText(appState.socialMediaMessage); //place the cursor at the end of the predefined text editText.setSelection(editText.getText().length()); textLimit = textLimit - editText.length(); textView.setText(String.valueOf(textLimit)); } return true; } return super.shouldOverrideUrlLoading(view, url); } }); //send user to authorization page webView.loadUrl(authURL); 

使用:

 post.addPayload(payload); 

代替:

 post.addBodyParameter("body", payload);