| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Web;
- using System.Configuration;
- using SAP.Middleware.Connector;
- using System.IO;
- using System.Net;
- using System.Text;
- using Newtonsoft.Json.Linq;
- using Curtain.DataAccess;
- /// <summary>
- /// SapApi xuwei add 2020-07-15
- /// </summary>
- public class SapJsonApi
- {
- //SAP服务器配置参数
- public static string SetType = ConfigurationManager.AppSettings["SetType"].ToString();
- public static string SapJson_UserName = ConfigurationManager.AppSettings["SapJson_UserName"].ToString();
- public const string DKMES_ZFIFM060_url_test = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZFIFM060";
- public const string DKMES_ZFIFM060_url_prod = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZFIFM060";
- public static string DKMES_ZFIFM060()
- {
- try
- {
- string url = DKMES_ZFIFM060_url_test;
- if ("prod" == SetType)
- {
- url = DKMES_ZFIFM060_url_prod;
- }
- string postString = "{\"IV_WERKS\":\"5000\"}";
- string result = PostData(url, postString, "POST");
- JObject json = JObject.Parse(result);
- string status = json["ZTYPE"].ToString();
- string msg = json["ZMSG"].ToString();
- if ("S" == status)
- {
- JArray items = (JArray)((JToken)json["ITEM"])["item"];
- msg += " " + items.Count;
- string sql_del = "update T_RPT_SKU_KP_VALUES set kiln_value = null";
- string sql_upd = "update T_RPT_SKU_KP_VALUES set kiln_value = @KILN_VALUE@ where sku_code = @SKU_CODE@";
- string sql_add = "insert into T_RPT_SKU_KP_VALUES (SKU_CODE, KILN_VALUE, ACCOUNTID, VALUEFLAG, CREATEUSERID, UPDATEUSERID)" +
- " values (@SKU_CODE@, @KILN_VALUE@, @ACCOUNTID@, @VALUEFLAG@, @CREATEUSERID@, @UPDATEUSERID@) ";
- using (IDataAccess conn = DataAccess.Create())
- {
- conn.BeginTransaction();
- // 增量拉取,不删除
- //conn.ExecuteNonQuery(sql_del);
- CDAParameters ps = CDAParameters.Create();
- ps.Add("@SKU_CODE@", "");
- ps.Add("@KILN_VALUE@", "");
- ps.Add("@ACCOUNTID@", 1);
- ps.Add("@VALUEFLAG@", "1");
- ps.Add("@CREATEUSERID@", 2);
- ps.Add("@UPDATEUSERID@", 2);
- foreach (JToken item in items)
- {
- ps["@SKU_CODE@"].Value = item["MATNR"] + "";
- ps["@KILN_VALUE@"].Value = Convert.ToDecimal(item["JIAGE"] + "");
- int rr = conn.ExecuteNonQuery(sql_upd, ps.ToArray());
- if (rr == 0)
- {
- rr = conn.ExecuteNonQuery(sql_add, ps.ToArray());
- }
- }
- conn.Commit();
- }
- }
- return msg;
- }
- catch (Exception e)
- {
- return "操作失败:" + e.Message;
- }
- }
- #region PostData 请求
- public static string PostData(string url, string data, string method)
- {
- //将单引号转义成双引号
- data = data.Replace("'", "\"");
- //创建Web访问对象
- HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
- //把用户传过来的数据转成“UTF-8”的字节流
- byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
- myRequest.Method = method;
- myRequest.ContentLength = buf.Length;
- myRequest.ContentType = "application/json;charset=UTF-8";
- //myRequest.MaximumAutomaticRedirections = 1;
- myRequest.AllowAutoRedirect = true;
- //UTF8标准转码加密
- string userName = SapJson_UserName;
- // 测试
- //userName = "hgsapdk:Sapdk#240";
- // 正式
- //string userName = "PODKMES:Sapdk#800";
- string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(userName));
- myRequest.Headers.Add("Authorization", "Basic " + base64Header);
- //发送请求
- Stream stream = myRequest.GetRequestStream();
- stream.Write(buf, 0, buf.Length);
- stream.Close();
- //获取接口返回值
- //通过Web访问对象获取响应内容
- HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
- //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
- StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
- //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
- string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
- reader.Close();
- myResponse.Close();
- return returnXml;
- }
- #endregion
- }
|