private sRequest createHttpRequest(sRequest basereq, List<OAuth.Parameter> oauthParams) { AccessorInfo.OAuthParamLocation? paramLocation = accessorInfo.getParamLocation(); // paramLocation could be overriden by a run-time parameter to fetchRequest sRequest result = new sRequest(basereq); // If someone specifies that OAuth parameters go in the body, but then sends a request for // data using GET, we've got a choice. We can throw some type of error, since a GET request // can't have a body, or we can stick the parameters somewhere else, like, say, the header. // We opt to put them in the header, since that stands some chance of working with some // OAuth service providers. if (paramLocation == AccessorInfo.OAuthParamLocation.POST_BODY && !result.getMethod().Equals("POST")) { paramLocation = AccessorInfo.OAuthParamLocation.AUTH_HEADER; } switch (paramLocation) { case AccessorInfo.OAuthParamLocation.AUTH_HEADER: result.addHeader("Authorization", getAuthorizationHeader(oauthParams)); break; case AccessorInfo.OAuthParamLocation.POST_BODY: if (!OAuth.isFormEncoded(result.ContentType)) { throw responseParams.oauthRequestException(OAuthError.INVALID_REQUEST, "OAuth param location can only be post_body if post body is of " + "type x-www-form-urlencoded"); } String oauthData = OAuth.formEncode(oauthParams); if (result.getPostBodyLength() == 0) { result.setPostBody(Encoding.UTF8.GetBytes(oauthData)); } else { result.setPostBody(Encoding.UTF8.GetBytes(result.getPostBodyAsString() + '&' + oauthData)); } break; case AccessorInfo.OAuthParamLocation.URI_QUERY: result.setUri(Uri.parse(OAuth.addParameters(result.getUri().ToString(), oauthParams))); break; } return result; }