2017-02-17 29 views
0

Я пытаюсь отправить base64String данных с помощью моего клиента на свой сервер, который использует WCF. У меня возникают проблемы с методом Post с обеих сторон. Кажется, я ничего не получаю и не обрабатываю ни одну из передаваемых данных.Использование клиента для данных POST и прием данных с использованием метода POF POF

КЛИЕНТ СТОРОНА:

private void On_FingerDetect(object sender, FingerPrintArgs e) 
    { 
     if (!button1.Enabled) 
     { 
      byte[] newPrint = e.getPrint(); 
      string print = Convert.ToBase64String(newPrint); 
      string json = JsonConvert.SerializeObject(new KeyValuePair<string, string>("print", print)); 

      // Post URL here 
      PostAsync("http://localhost:4686/Service1.svc/doPost/", json); 

      toolStripStatusLabel1.Text = "Processing Finger Print"; 
      //toolStripStatusLabel1.Text = print; 
     } 
    } 
    public async Task PostAsync(string uri, string data) 
    { 
     var httpClient = new HttpClient(); 

     var response = await httpClient.PostAsync(uri, new StringContent(data)); 

     var content = response.Content; 

     await content.ReadAsStringAsync(); 

     button1.Enabled = true; 
     toolStripStatusLabel1.Text = data; 
    } 

SERVER СТОРОНА:

[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, UriTemplate = "doPost/{value}")] 
    [OperationContract] 
    string doPost(string value); 


public class Service1 : IService1 
{ 

    static string myConnection = "DSN=MS Access Database"; 
    OdbcConnection myConn = new OdbcConnection(myConnection); 
    OdbcCommand mycommand; 
    OdbcTransaction transaction; 
    OdbcDataAdapter adapter; 

    public string doPost(string value) 
    { 
     // Trace.WriteLine("hello", value); 
     byte[] b = Convert.FromBase64String(value); 
     OdbcConnection myConn = new OdbcConnection(myConnection); 
     string query = "INSERT INTO fingerPrintDb (fingerPrint) VALUES ('" + value + "')"; 
     OdbcCommand mycommand = new OdbcCommand(query, myConn); 

     myConn.Open(); 
     transaction = myConn.BeginTransaction(); 

     mycommand.Connection = myConn; 
     mycommand.Transaction = transaction; 
     mycommand.CommandText = query; 

     mycommand.ExecuteNonQuery(); 
     transaction.Commit(); 
     myConn.Close(); 

     return "Success"; 
    } 

ответ

0

Я бы сказал, что в вашем UriTemplate, вы не должны использовать {} PARM там. Вы отправляете его через тело POST. Я не могу проверить это, но это мое первое предположение.

+0

Я выбрал параметры. Когда я запускаю его, я получаю эту ошибку: Говорит им, используя: «GET /Service1.svc/doPost», когда им полагается использовать пост – tam

+0

Приложение Insights Телеметрия (не настроенная): {"name": "Microsoft.ApplicationInsights. Dev.Request "," time ":" 2017-02-17T19: 16: 24.7684792Z "," tags ": {" ai.operation.name ":" GET /Service1.svc/doPost","ai.operation. идентификатор ":" JlJUJw/8Sdw = " "ai.location.ip": ":: 1", "ai.cloud.roleInstance": "DESKTOP-0U0ICHR", "ai.internal.sdkVersion":" веб-сайт: 2,2 .0-738 "}," data ": {" baseType ":" RequestData "," baseData ": {" ver ": 2," id ":" JlJUJw/8Sdw = "," name ":" GET/Service1 .svc/doPost " "продолжительность": "00: 00: 00,0050000", "успех" ложь "responseCode": "405", "URL":" HTTP: // локальный: 4686/Service1.svc/doPost "," properties ": {" DeveloperMode ":" true "}}}} – tam

+0

Это полная ошибка, я получаю – tam