23

C# cloudinary api を mono に移植しようとしていますが、http 要求の作成に問題があります。

リクエストを設定するためにこのメソッドを分離しましたが、モノでは HttpWebRequest.ContentLength が -1 であることが判明しましたが、.net ではコンテンツが適切に構築されています。

Mac で最新の Xamarin Studio を実行しており、MONO / .NET 4.0 ライブラリの Mono バージョンを構築しています: 2.10.12

編集: 簡略化されたコード、このテストは Visual Studio では成功しますが、Xamarin studio では失敗します

編集:誰かが助けたい場合、コードはgithubにプッシュされます

    [Test]
    public void StreamTest()
    {
        var request = System.Net.HttpWebRequest.Create("http://foo.com");
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        using (var writer = new System.IO.StreamWriter(request.GetRequestStream()))
        {
            writer.Write("anything");
        }

        Assert.IsTrue(request.ContentLength > 0);
    }
4

2 に答える 2

0

ここを参照してください: Xamarin フォーラム

これを置き換えることをお勧めします:

byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(bundleString);
string result = Convert.ToBase64String(buffer);
StreamWriter requestWriter = new StreamWriter(httpWebRequest.GetRequestStream());
requestWriter.Write(result, 0, result.Length);
requestWriter.Flush();
requestWriter.Close();

これとともに:

httpWebRequest.ContentLength = bundleString.Length;
StreamWriter requestWriter = new StreamWriter(httpWebRequest.GetRequestStream());
requestWriter.Write(bundleString);
requestWriter.Flush();
requestWriter.Close();

問題を修正しました。これを試すことができます。

于 2015-05-26T07:00:59.490 に答える