第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

上傳json圖片發(fā)送api請求

上傳json圖片發(fā)送api請求

紅顏莎娜 2023-12-14 14:34:16
我想將圖像作為 json 發(fā)送到 post api,但是當(dāng)我以 json 形式發(fā)送圖像的 url 時(shí),響應(yīng)顯示錯(cuò)誤。但是在郵遞員中,當(dāng)我通過文件上傳發(fā)送圖像時(shí),它可以工作。我的json:{name:"xxx",image:"someurl"}我的 C# 代碼: {            string url = "xxxxxxxxxx";            HttpWebRequest webRequest = null;            HttpWebResponse webResponse = null;            string responseFromServer = "";            webRequest = (HttpWebRequest)WebRequest.Create(url);            webRequest.Credentials = CredentialCache.DefaultCredentials;            webRequest.ContentType = "application/json";                       webRequest.Method = "POST";            webRequest.ReadWriteTimeout = 300000;            // Get the response.            using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))            {                streamWriter.Write(jsonREQ);                streamWriter.Flush();                streamWriter.Close();            }            using (webResponse = (HttpWebResponse)webRequest.GetResponse())            {                Stream responseStream = webResponse.GetResponseStream();                using (StreamReader sr = new StreamReader(responseStream))                {                    responseFromServer = sr.ReadToEnd();                    sr.Close();                }                webResponse.Close();            }            return responseFromServer;        }這里的 json 請求有 json,當(dāng)我使用這個(gè)時(shí),我沒有得到預(yù)期的響應(yīng),但是當(dāng)我使用 postman 進(jìn)行文件上傳時(shí), 它可以工作,請建議我一種以 json 發(fā)送圖像的方法。(* 已嘗試過 base64 和 byte ,它沒有按預(yù)期工作*)
查看完整描述

1 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

嘗試這個(gè):


var formData = new FormData();

formData.append("image", fileInputElement.files[0]);


var request = new XMLHttpRequest();

request.open("POST", "http://example.com/submitform.php");

request.send(formData);

并在服務(wù)器上將其上傳到另一臺服務(wù)器:


string responseString;


using (var fileStream = new FileStream(filePath, FileMode.Open))

{

    var formData = new MultipartFormDataContent {

        { new StreamContent(fileStream), @"image", Path.GetFileName(filePath) }

    };


    var request = (HttpWebRequest)WebRequest.Create("URL");

    request.Method = WebRequestMethods.Http.Post;


    request.AllowWriteStreamBuffering = false;

    request.SendChunked = true; // set to true to avoid exception when AllowWriteStreamBuffering = false and ContentLength is not set

    request.Headers.Add("abc", "def");


    request.ContentType = formData.Headers.ContentType.ToString();


    try

    {

        // Get the request stream with the default timeout

        using (Stream requestStream = await request.GetRequestStreamAsyncWithTimeout())

        {

            // Upload the file with no timeout

            await formData.CopyToAsync(requestStream);

        }


        // Get response with the default timeout, and parse the response body

        using (WebResponse response = await request.GetResponseAsyncWithTimeout())

        using (Stream responseStream = response.GetResponseStream())

        using (StreamReader reader = new StreamReader(responseStream))

        {

            responseString = reader.ReadToEnd();

        }

    }

    catch (WebException ex)

    {

        if (ex.Status == WebExceptionStatus.Timeout)

        {

            throw new TimeoutException("Timeout while uploading file.", ex);

        }

        throw;

    }

}

ResultModel result = JsonConvert.DeserializeObject<ResultModel>(responseString);

這些擴(kuò)展可以讓您的上傳請求在文件較大或連接速度較慢時(shí)不會超時(shí):


public static class WebRequestExtensions

{

    public static async Task<Stream> GetRequestStreamAsyncWithTimeout(this WebRequest request, int? millisecondsTimeout = null)

    {

        Task<Stream> getTask = request.GetRequestStreamAsync();


        if (await Task.WhenAny(getTask, Task.Delay(request.Timeout)) == getTask)

        {

            // task completed without timeout

            return getTask.Result;

        }

        else

        {

            // timeout

            var ex = new TimeoutException();

            throw new WebException(ex.Message, ex, WebExceptionStatus.Timeout, null);

        }

    }


    public static async Task<WebResponse> GetResponseAsyncWithTimeout(this WebRequest request, int? millisecondsTimeout = null)

    {

        Task<WebResponse> getTask = request.GetResponseAsync();


        if (await Task.WhenAny(getTask, Task.Delay(request.Timeout)) == getTask)

        {

            // task completed without timeout

            return getTask.Result;

        }

        else

        {

            // timeout

            var ex = new TimeoutException();

            throw new WebException(ex.Message, ex, WebExceptionStatus.Timeout, null);

        }

    }


    private static T AsyncToSyncWithTimeout<T>(

        Func<AsyncCallback, object, IAsyncResult> begin,

        Func<IAsyncResult, T> end,

        int millisecondsTimeout)

    {

        var iar = begin(null, null);

        if (!iar.AsyncWaitHandle.WaitOne(millisecondsTimeout))

        {

            var ex = new TimeoutException();

            throw new WebException(ex.Message, ex, WebExceptionStatus.Timeout, null);

        }

        return end(iar);

    }

}


查看完整回答
反對 回復(fù) 2023-12-14
  • 1 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號