2012-04-20 1 views
0

다음은 게시물 메시지를 보내는 코드입니다. 내 화면에는 사용자가 텍스트를 입력 할 수있게 해주는 EditText 섹션이 있으며, sendMessage 함수가 호출되면 POST를 실행합니다. 나는 응답에서 이것을 계속 얻는다. 또한 URLEncode.encode (페이로드, "UTF-8")를 사용하여 인코딩 된 문자열을 본문에 추가하고 작동하지 않았습니다. 모든 통찰력이 도움이 될 것입니다. 여기 안드로이드에서 작동하지 않는 Scribe with LinkedIn에 메시지 게시

04-19 18:24:50.570: D/response(693): <error> 
04-19 18:24:50.570: D/response(693): <status>400</status> 
04-19 18:24:50.570: D/response(693): <timestamp>1334859891007</timestamp> 
04-19 18:24:50.570: D/response(693): <request-id>WJPI8VXQME</request-id> 
04-19 18:24:50.570: D/response(693): <error-code>0</error-code> 
04-19 18:24:50.570: D/response(693): <message>Couldn't parse share document: error: Unexpected end of file after null</message> 
04-19 18:24:50.570: D/response(693): </error> 

코드입니다 :

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 <?xml version=\"1.0\" encoding=\"UTF-8\"?>" to the beginning of the payload string   
    String payload = "<share>" + 
         "<comment>testing</comment>" + 
         "<visibility><code>anyone</code></visibility>" + 
        "</share>"; 

    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.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); 

답변

3

사용 :

post.addPayload(payload); 

대신 :

post.addBodyParameter("body", payload); 
관련 문제