不断收到21002“显示java.lang.NullPointerException”对苹果的Ver

2019-09-18 05:59发布

我不断收到21002“显示java.lang.NullPointerException”苹果错误,当我尝试测试我的应用程序内购买在沙箱中。 这是我做了什么:

  • 成立了应用程序内购买的产品在iTunes Connect。 我能够通过StoreKit成功找回它们。
  • 设立在iTunes Connect测试用户。
  • 应用程序启动时,下载可在应用内购买商品,我触发应用程序内购买和苹果与transactionReceipt,这是我的base64编码在iPhone和发送到我的C#/ ASP.NET服务器响应。
  • 服务器把收到的字符串转换成JSON(我想它都与NewtonSoft.Json和手动),并发送JSON苹果:

var json = "{ 'receipt-data': '" + receipt + "'}";

要么:

var json = new JObject(new JProperty("receipt-data", receipt)).ToString();

接着:

var webRequest = System.Net.HttpWebRequest.Create("https://sandbox.itunes.apple.com/verifyReceipt");
webRequest.ContentType = "text/plain";
webRequest.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(receipt);
webRequest.ContentLength = byteArray.Length;
using (var stream = webRequest.GetRequestStream())
{
    stream.Write(byteArray, 0, byteArray.Length);
    stream.Flush();
}

var resp = webRequest.GetResponse();
if (resp != null)
{
    using (var sr = new System.IO.StreamReader(resp.GetResponseStream()))
    {
        var result = sr.ReadToEnd().Trim();
        var iapResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<AppleIapResponse>(result);
        // always getting '21002' 'java.lang.NullPointerException'
    }
}

我什么都试过:改变contentType中的JSON格式,编码....

任何提示?

Answer 1:

这是代码中的一个简单的错误,我在写收据进入后,没有JSON:

byte[] byteArray = Encoding.UTF8.GetBytes(json);
                                          ^^^^

墙上撞,从我的头好痛..



文章来源: Keep getting 21002 'java.lang.NullPointerException' on Apple's VerifyReceipt