发布.zip文件大于127kb时,PhoneGap构建API错误

本文关键字:PhoneGap 构建 API 错误 zip 文件 大于 127kb 发布 | 更新日期: 2023-09-27 18:14:48

我写了下面的c#应用程序来通过PhoneGap构建API更新现有的应用程序。我注意到它工作时,我的。zip文件是127kb或更少。一旦达到128kb,我就会得到一个500 HTTP响应。对不起,API没有返回任何有关错误的详细信息,只有500响应代码。对于这个问题的任何帮助都将非常感激。请注意身份验证令牌、appId和.zip文件位置的占位符。谢谢。

using System;
using System.IO;
using System.Net;
namespace PhoneGapBuildQuestion
{
    class Program
    {
        static void Main(string[] args)
        {
            string token = "<add your token here>";
            string appId = "<add your appId here>";
            string zipFile = "<add full path to the application .zip file here>";
            var info = new FileInfo(zipFile);
            var request = (HttpWebRequest)WebRequest.Create(string.Format("https://build.phonegap.com/api/v1/apps/{0}?auth_token={1}", appId, token));
            request.ContentType = "application/zip";
            request.Headers["Content-disposition"] = string.Format("attachment; filename='"{0}'"", info.Name);
            request.Method = "PUT";
            var reqStream = request.GetRequestStream();
            var file = new FileStream(zipFile, FileMode.Open);
            var bytes = new byte[32768];
            int len = 0;
            while((len = file.Read(bytes, 0, bytes.Length)) > 0)
                reqStream.Write(bytes, 0, len);
            reqStream.Close();
            var response = new StreamReader(request.GetResponse().GetResponseStream());
            string responseText = response.ReadToEnd();
            Console.WriteLine(responseText);
            Console.ReadLine();
        }
    }
}

发布.zip文件大于127kb时,PhoneGap构建API错误

我明白了。我使用fiddler捕获来自我的应用程序和cURL的请求,比较两者并进行相应调整。下面是我最后写的代码:

using System;
using System.IO;
using System.Net;
namespace PhoneGapBuildQuestion
{
    class Program
    {
        static void Main(string[] args)
        {
            string appId = "[your appId here]";
            string fileName = "[absolute path to .zip file here]";
            string token = "[authentication token here]";
            string boundry = "----------------------------7b053ae48e94";
            var encoding = new System.Text.ASCIIEncoding();
            var fileInfo = new FileInfo(fileName);
            var ms = new MemoryStream();
            long totalBytes = 0;
            string txt = string.Format("--{0}{2}Content-Disposition: form-data; name='"file'"; filename='"{1}'"{2}Content-Type: application/octet-stream{2}{2}", boundry, fileInfo.Name, Environment.NewLine);
            int bytesRead = 0;
            var buffer = new byte[32768];
            bytesRead = encoding.GetBytes(txt, 0, txt.Length, buffer, 0);
            totalBytes += bytesRead;
            ms.Write(buffer, 0, bytesRead);
            // read/write file contents to the stream
            var fs = new FileStream(fileName, FileMode.Open);
            while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, bytesRead);
                totalBytes += bytesRead;
            }
            txt = Environment.NewLine + "--" + boundry + "--" + Environment.NewLine;
            bytesRead = encoding.GetBytes(txt, 0, txt.Length, buffer, 0);
            totalBytes += bytesRead;
            ms.Write(buffer, 0, bytesRead);
            ms.Position = 0;
            var request = (HttpWebRequest)WebRequest.Create(string.Format("https://build.phonegap.com/api/v1/apps/{0}?auth_token={1}", appId, token));
            request.ContentLength = totalBytes;
            request.Method = "PUT";
            request.ContentType = "multipart/form-data; boundary=" + boundry;
            var requestStream = request.GetRequestStream();
            while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) > 0)
                requestStream.Write(buffer, 0, bytesRead);
            requestStream.Close();
            Console.WriteLine(new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd());
            Console.ReadLine();
        }
    }
}