我正在开发我的WooCommerce商店的Android应用程序,我使用GET http动词WooCommerce REST Api获取产品,类别,订单,客户等商店数据.它工作正常,我能够为api V2生成oAuth 1.0签名V3正常.现在,我想执行Write动作.我从相同的文档中学到了我需要使用POST Http动词.我尝试了同样的卡住.
当我使用URL,oAuth数据和生成的签名使用HttpGet或HttpPost请求执行任何POST操作时,我得到:
{"errors":[{"code":"woocommerce_api_authentication_error","message":"Invalid Signature - provided signature does not match"}]}
我遵循文档中给出的所有说明并在Google上找到,使用“POST”字符串生成oAuth签名,尝试使用HttpGet和HttpPost发送params但失败了.
任何人都可以请给我一些说明或示例,使用Android的POST Http动词来使用WooCommerce REST API执行写操作. (比如创建新订单,创建新类别等)
最佳答案
我遇到了同样的错误,我必须做的是创建一个不同的POST适配器类.我正在使用网络调用的改造,这是我的代码段:
package me.gilo.a55thavenue.data;
import android.util.Base64;
import android.util.Log;
import com.squareup.okhttp.HttpUrl;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.message.BasicNameValuePair;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import retrofit.GsonConverterFactory;
import retrofit.Retrofit;
import retrofit.RxJavaCallAdapterFactory;
/**
* Created by Aron on 10/31/2015.
*/
public class PostRestAdapter {
static String oauth_nonce = "";
static String oauth_timestamp = "";
static String oauth_signature_method = "HMAC-SHA1";
static ArrayList