【发布时间】:2020-08-10 05:11:30
【问题描述】:
我是 Xamarin 和 C# 的新手,我想从我的应用程序中将书籍名称和作者插入 MySql 数据库,所以我创建了名为 BooksInsert.cs 的类:
using System;
using System.Collections.Generic;
using System.Text;
namespace NewTest.Model
{
class BooksInsert
{
public string book_name { get; set; }
public string book_auther { get; set; }
}
}
然后是另一个名称为 WebHelper.cs 的类,用于 GET 和 POST :
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Linq;
using System.Net;
namespace NewTest.Model
{
class WebHelper
{
public string Post(Uri url, string value)
{
var request = HttpWebRequest.Create(url);
var byteData = Encoding.ASCII.GetBytes(value);
request.ContentType = "application/json";
request.Method = "POST";
try
{
using (var stream = request.GetRequestStream())
{
stream.Write(byteData, 0, byteData.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
return responseString;
}
catch (WebException)
{
return null;
}
}
public string Get(Uri url)
{
var request = HttpWebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "GET";
try
{
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
return responseString;
}
catch (WebException)
{
return null;
}
}
}
}
在添加页面 NewBookPage.xaml 我有这个内容:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="NewTest.NewBookPage">
<ContentPage.Content>
<StackLayout>
<Entry x:Name="b_name" Placeholder="Name of Book"/>
<Entry x:Name="b_auther" Placeholder="auther of Book"/>
<Button Text="Save"
Clicked="Button_Clicked"/>
</StackLayout>
</ContentPage.Content>
</ContentPage>
和 NewBookPage.xaml.cs :
using NewTest.Model;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace NewTest
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class NewBookPage : ContentPage
{
public NewBookPage()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
WebHelper webHelper = new WebHelper();
BooksInsert item = new BooksInsert();
item.book_name= b_name.Text;
item.book_auther = b_auther.Text;
string request = JsonConvert.SerializeObject(item);
Uri url = new Uri(string.Format("localhost/API/insert.php"));
string response = webHelper.Post(url, request);
if (response != null)
{
//Handle your reponse here
}
else
{
//No Response from the server
}
}
}
}
现在我不知道如何继续将 json 文件发送到 insert.php 文件以及在 insert.php 中如何接收 json 数据,谁能帮助我?
【问题讨论】:
-
您不需要将 JSON 文件 发送到 PHP 脚本。如果这些 PHP 脚本以 JSON 形式接收有效负载,则只需对有效负载进行编码即可。我好像你已经在这里做了:
string request = JsonConvert.SerializeObject(item);在NewBookPage.xaml.cs。你测试过你的程序吗?您能否提供更多数据,例如请求响应和错误?你知道insert.phpAPI 吗? -
@Andre 我测试了一下,说不支持uri格式,那我怎么把数据插入MySql数据库
-
这个 PHP 脚本是否在本地网络服务器中运行?你有没有试过把
http://放在URL前面,所以它变成http://localhost/API/insert.php?另外,我会检查它在哪个端口运行,通常是端口80。 -
http:// url 没有问题,但现在我只需要如何在 insert.php 文件中获取数据
-
@AndreRavazzi 我在 http:// 中检查过,在数据库中插入了新行但没有数据,insert.php 没有从应用程序接收数据,我如何在 insert.php 中接收数据