نقل قول: مشکل در api دو جانبه
درود
وب سرویس شما restful هست یا soap ؟ نمونه کد ارئه کنید تا به صورت مستند تر بشه مشکل رو بررسی و راه حل ارائه نمود...
اگر soap هست binding رو به اشتراک بزارید. اگر restful هست آدرس و جزئیات و چیزی که بشه دقیقتر بررسی کرد ارائه کنید با یک عکس نمیتواند راهنمایی کرد متاسفانه دوست عزیز
شاد باشید
نقل قول: مشکل در api دو جانبه
public static string _Location { get; set; }
public static string _UserID { get; set; }
public static bool User_AddNew(string GroupName, string UserName, string UserPassword)
{
var cookies = new CookieContainer();
// Request 1 : Login
var request = (HttpWebRequest)WebRequest.Create("http://" + Servers._ServerIP + "/IBSng/admin/?");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.CookieContainer = cookies;
string postDataLogin = "username=" + Servers._AdminUser + "&password=" + Servers._AdminPass + "&x=28&y=15";
byte[] postBytes = Encoding.Default.GetBytes(postDataLogin);
request.ContentLength = postBytes.Length;
using (Stream body = request.GetRequestStream())
{
body.Write(postBytes, 0, postBytes.Length);
}
WebResponse response = request.GetResponse();
string referer = response.ResponseUri.AbsoluteUri;
// Request 2 : Create user
request = (HttpWebRequest)WebRequest.Create("http://" + Servers._ServerIP + "/IBSng/admin/user/add_new_users.php?");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.CookieContainer = cookies;
postBytes = Encoding.Default.GetBytes("submit_form=1&add=1&cou nt=1&credit=1&owner_name=system&group_name=" + GroupName + "&x=22&y=12&edit__normal_username=normal_username& edit__voip_username=voip_username");
request.ContentLength = postBytes.Length;
using (Stream body = request.GetRequestStream())
{
body.Write(postBytes, 0, postBytes.Length);
}
response = request.GetResponse();
_Location = response.ResponseUri.ToString();
var parsedQuery = HttpUtility.ParseQueryString(_Location);
string userID = parsedQuery["user_id"].ToString().Trim();
Users._UserID = userID;
request = (HttpWebRequest)WebRequest.Create("http://" + Servers._ServerIP + "/IBSng/admin/plugins/edit.php?");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.CookieContainer = cookies;
postBytes = Encoding.Default.GetBytes("target=user&target_id=" + userID + "&update=1&edit_tpl_cs=&normal_username=&voip_user name=&attr_update_method_0=normalAttrs&has_normal_ username=t¤t_normal_username=&normal_usernam e=" + UserName + "&password_character=t&password_digit=t&password_l en=" + UserPassword.Length.ToString() + "&password=" + UserPassword + "&normal_save_user_add=&tattr_update_method_1=voip Attrs¤t_voip_username=&x=17&y=10");
request.ContentLength = postBytes.Length;
using (Stream body = request.GetRequestStream())
{
body.Write(postBytes, 0, postBytes.Length);
}
response = request.GetResponse();
Stream requestStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(requestStream);
string _res = streamReader.ReadToEnd();
response.Close();
if (_res.Contains("Basic User Informations")) { return true; } else { return false; }
}
نقل قول: مشکل در api دو جانبه
ابتدا بسته زیر را از نوگت در پروژه اضافه کنید
Install-Package Newtonsoft.Json
حال به شکل زیر ریکوئست Post را برای سرور ارسال کرده و بررسی کنید که مشکلات حل میشود یا خیر
public class MyDataType
{
public string username { get; set; }
public string password { get; set; }
public int x { get; set; }
public int y { get; set; }
}
public async void HttpTestPostData()
{
HttpClientHandler handler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
using (var client = new HttpClient(handler))
{
var requestMessage = new HttpRequestMessage(HttpMethod.Post, "http://url.com");
requestMessage.Content = new ObjectContent<MyDataType>(new MyDataType()
{
username = "user",
password = "pass",
x = 28,
y = 15
}, new JsonMediaTypeFormatter());
//// Add our custom headers
requestMessage.Headers.Add("Accept", "application/json, text/plain, */*");
requestMessage.Headers.Add("Accept-Language", "en-US,en;q=0.8,fa;q=0.6");
requestMessage.Headers.Add("Connection", "keep-alive");
requestMessage.Headers.Add("Host", "yourserver.com");
requestMessage.Headers.Add("Origin", "http://yourserver.com");
requestMessage.Headers.Add("Referer", "http://yourserver.com");
requestMessage.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36");
var clientResponse = await client.SendAsync(requestMessage);
var listFormatter = new List<MediaTypeFormatter>();
listFormatter.Add(new JsonMediaTypeFormatter());
var serverResponse = await clientResponse.Content.ReadAsAsync<MyDataType>(lis tFormatter);
}
}
موفق باشید
نقل قول: مشکل در api دو جانبه
نشد . امکانش است که از طزیق تلگرام راهنمایی کنید
نقل قول: مشکل در api دو جانبه
با عرض سلام.
ممنون میشم که اضافه کردن کاربر در IBSNG رو با زبان C# همینجا توضیح بدید.
من هم همین مشکلات رو دارم.