У меня есть один веб-сервис WCF. Я использую метод get для вставки данных. Поэтому я передаю все данные в URL, какВ пространствах веб-сервисов не разрешается при передаче данных по URL-адресу с использованием метода GET
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "Insert_drug_details?x_patient_id={x_patient_id}&drug_name={drug_name}&no_of_pills_given={no_of_pills_given}&no_of_pills_taken={no_of_pills_taken}&any_side_effect={any_side_effect}&date_of_pills_given={date_of_pills_given}&x_trimester={x_trimester}&x_visit_no={x_visit_no}")]
Stream Insert_drug_details(String x_patient_id, String drug_name, String no_of_pills_given, String no_of_pills_taken, String any_side_effect, String date_of_pills_given, String x_trimester, String x_visit_no);
, но когда я прохожу значение с пространством автоматически заменить мое место на 20%, который неверные данные для вставки.
Итак, с моей точки зрения во время ввода я должен преобразовать значения из UTF-8 в nvarchar. Сторона Android все значения закодированы. Поэтому я просто расшифровываю значение.
Это мой метод вставки:
public Stream Insert_drug_details(String x_patient_id, String drug_name, String no_of_pills_given, String no_of_pills_taken
, String any_side_effect, String date_of_pills_given, String x_trimester, String x_visit_no)
{
int flag = 0;
String CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (MySqlConnection con = new MySqlConnection(CS))
{
con.Open();
String ResultDrugDetailsString;
MySqlCommand cmd = new MySqlCommand("sp_drug_details", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("x_patient_id", x_patient_id);
cmd.Parameters.AddWithValue("drug_name", drug_name);
cmd.Parameters.AddWithValue("no_of_pills_given", no_of_pills_given);
cmd.Parameters.AddWithValue("no_of_pills_taken", no_of_pills_taken);
cmd.Parameters.AddWithValue("any_side_effect", any_side_effect);
cmd.Parameters.AddWithValue("date_of_pills_given", date_of_pills_given);
cmd.Parameters.AddWithValue("x_trimester", x_trimester);
cmd.Parameters.AddWithValue("x_visit_no", x_visit_no);
flag = (int)cmd.ExecuteScalar();
if (flag == 1 || flag == 2)
{
MySqlCommand cmd1 = new MySqlCommand("select id from drug_details where [email protected]_id and [email protected] and [email protected]_no", con);
cmd1.Parameters.AddWithValue("@patient_id", x_patient_id);
cmd1.Parameters.AddWithValue("@trimester", x_trimester);
cmd1.Parameters.AddWithValue("@visit_no", x_visit_no);
using (MySqlDataReader rdr = cmd1.ExecuteReader())
{
List<Result_Drug_Details> DrugDetails = null;
while (rdr.Read())
{
if (DrugDetails == null)
{
DrugDetails = new List<Result_Drug_Details>();
}
Result_Drug_Details obj = new Result_Drug_Details();
obj.id = rdr["id"].ToString();
DrugDetails.Add(obj);
}
if (DrugDetails != null)
{
ResultDrugDetailsString = "{\"drug_details\":" + JsonConvert.SerializeObject(DrugDetails, Formatting.Indented) + ",\"isSuccess\":\"1\"}";
}
else
{
ResultDrugDetailsString = "{\"isSuccess\":\"-1\"}";
}
WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
return new MemoryStream(Encoding.UTF8.GetBytes(ResultDrugDetailsString));
}
}
else
{
ResultDrugDetailsString = "{\"isSuccess\":\"-1\"}";
WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
return new MemoryStream(Encoding.UTF8.GetBytes(ResultDrugDetailsString));
}
}
}
Есть ли другие возможные решения для этого ??? Как конвертировать UTF-8 в nvarchar ?? Или Как декодировать UTF-8 в nvarchar ??
Попробуйте HttpServerUtility.UrlDecode: https://msdn.microsoft.com/en-us/library/6196h3wt%28v=vs.110%29.aspx –