我有视觉工作室2017,系统中有以下Xamarin版本。
Microsoft Visual Studio Professional 2017版本15.6.1 VisualStudio.15.Release / 15.6.1 + 27428.2002 Microsoft .NET Framework 版本4.7.02556
Xamarin 4.9.0.749(9b0fce36d)启用Visual Studio扩展 开发Xamarin.iOS和Xamarin.Android。
Xamarin Designer 4.10.58(cee1369d0)启用Visual Studio扩展 Visual Studio中的Xamarin Designer工具。
Xamarin.Android SDK 8.2.0.15(HEAD / 22d97e153)Xamarin.Android 参考装配和MSBuild支持。
Xamarin.iOS和Xamarin.Mac SDK 11.8.0.20(1c6f300)Xamarin.iOS和 Xamarin.Mac参考装配和MSBuild支持。我有 用一些.net类库添加为创建简单的Xamarin android 参考
我尝试使用xamarin应用程序发布一些数据,但总是在webapi中获取null值。
c#
中的WebApi代码java.text.ParseException: Unparseable date: "2017-04-09T11:15:39.200+03:00"
使用xamarin app调用post方法
public class DataPostController : ApiController
{
[HttpPost]
public string Post(CSVItem data)
{
// CSVData data = JsonConvert.DeserializeObject<CSVData>(json);
try
{
string error = string.Empty;
if (data != null)
{
error += ImportService.clsGlobal.AddItem(data.SerialNumber, data);
}
error = string.IsNullOrEmpty(error) ? "-1" : error;
return error;
}
catch (Exception ex)
{
return ex.Message;
}
}
public string Get()
{
return "Hello";
}
}
模型类在应用程序和&amp;与webApi相同。
CSVItem item = GetItems();
var url = string.Format("{0}/{1}?", "http://myurl.com", "api/DataPost");
string sContentType = "application/json"; // or application/xml
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "cHRlc3Q5OnB1bXB0ZXN0OUAxMjM0NTY=");
var oTaskPostAsync = client.PostAsync(url, new StringContent(item.ToString(), Encoding.UTF8, sContentType));
var res = oTaskPostAsync.ContinueWith((oHttpResponseMessage) =>
{
Task<string> r1 = oHttpResponseMessage.Result.Content.ReadAsStringAsync();
var strResult = r1.Result;
// response of post here
Pt9Log.WriteLog("HistoryDownload PostCSV end. StatusCode" + oTaskPostAsync.Result.StatusCode.ToString());
Pt9Log.WriteLog("HistoryDownload PostCSV end. Result===" + oTaskPostAsync.Result.ToString());
Pt9Log.WriteLog("HistoryDownload PostCSV end. Post Response===" + strResult);
if (oTaskPostAsync.Result.StatusCode == System.Net.HttpStatusCode.OK)
result = true;
else
result = false;
});
答案 0 :(得分:1)
您应该使用JsonConvert.SerializeObject()
将item
转换为JSON,而不是使用item.ToString()
。
例如:
var oTaskPostAsync = client.PostAsync(url, new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, sContentType));
您可以参考Consuming a RESTful Web Service了解更多信息。