Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将图像发送到VisualStudio Xamarin中的Django Rest_C#_Android_Visual Studio_Post_Xamarin - Fatal编程技术网

C# 将图像发送到VisualStudio Xamarin中的Django Rest

C# 将图像发送到VisualStudio Xamarin中的Django Rest,c#,android,visual-studio,post,xamarin,C#,Android,Visual Studio,Post,Xamarin,在为Android创建应用程序时,我在Visual Studio中遇到了一个问题。我尝试将一些数据(id、密钥和图像)发送到webservice(Django REST框架)并获得响应。代码是这样的 string requestUri = "https://www.haremtravel.com/api/new"; requestItem item = new requestItem(itemType,itemKey); var json = JsonConvert.SerializeObjec

在为Android创建应用程序时,我在Visual Studio中遇到了一个问题。我尝试将一些数据(id、密钥和图像)发送到webservice(Django REST框架)并获得响应。代码是这样的

string requestUri = "https://www.haremtravel.com/api/new";
requestItem item = new requestItem(itemType,itemKey);
var json = JsonConvert.SerializeObject(item);
byte[] b = SystemIO.File.ReadAllBytes(filePath);
HttpContent stringContent = new StringContent(json);
HttpContent fileByteContent = new ByteArrayContent(b);    
var formData = new MultipartFormDataContent();
formData.Add(stringContent);
formData.Add(fileByteContent);
HttpClient httpClient = new HttpClient();
var responseObj = httpClient.PostAsync(requestUri, formData);
结果是“状态代码:500,原因短语:'内部服务器错误',版本1.1,内容:System.Net.Http.StreamContent,标题: 如果我使用一些简单的东西,例如带有2个文本输入和1个文件输入的html/php表单(或用于Chrome“Postman”的插件),它可以工作。 有人能帮我解决这个问题吗


--更新--

requestItem类

public class requestItem
{
    public int gameid;
    public string key;
    public requestItem(int newId, string newKey)
    {
        gameid = newId;
        key = newKey;
    }
}
《邮差》中的请求截图
感谢您用相关信息更新您的问题

无需序列化数据对象(如果不以任何其他方式使用数据类,则该数据类本身是冗余的)

请使用以下代码进行尝试:

        string requestUri = "https://www.haremtravel.com/api/new";
        requestItem item = new requestItem(itemType, itemKey);

        byte[] b = System.IO.File.ReadAllBytes(filePath);

        MultipartFormDataContent formData = new MultipartFormDataContent();

        formData.Add(new StringContent(item.gameid.ToString()), "gameid");
        formData.Add(new StringContent(item.key), "key");
        formData.Add(new ByteArrayContent(b, 0, b.Count()), "image");

        HttpClient httpClient = new HttpClient();
        var responseObj = httpClient.PostAsync(requestUri, formData);

上载文件:

尝试使用以下内容添加ContentType标头:

byte[] b = System.IO.File.ReadAllBytes(filePath);
var imageContent = new ByteArrayContent(b);
imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");

formData.Add(imageContent, "image");
也许您还需要添加文件名

string fileName = GetFileNameWithExtensionSomehow(filePath);
formData.Add(imageContent, "image", fileName);

您好,您能为
requestItem
class/struct添加代码吗?端点是否希望请求是一个
多部分表单
?如果您在postman中添加了请求的屏幕截图,这会有所帮助。您是否在应用程序之外尝试过此Post请求,使用第三方Rest请求客户端(如postman)将其发送到@woelliJ Hi。requestItem是一个简单的类,有两个字段-int-id和string-key。我在postmanTo@apineda Hi中添加了请求的屏幕截图。对我在《邮递员》里试过。它显示正确result@AdeptusMechanicus恐怕我看不到截图。如果你没有发布你的
requestItem
类的代码,我不能说这是否是序列化的问题,谢谢。它部分工作(不是内部服务器错误)。现在的响应是{“image”:[“发送的数据不是文件。请检查表单上的编码类型。”]}我尝试了formData.Add(new StreamContent(new SystemIO.FileStream(filePath,SystemIO.FileMode.Open)),“image”);但它也不起作用。如果你也能帮我,我将不胜感激。我很高兴能帮上忙。请随意将我的答案标记为“正确”答案;)