PDA

View Full Version : سوال: مشکل در api دو جانبه



ms-ninja
شنبه 26 تیر 1395, 16:39 عصر
باس لام خدمت دوستان گرامی

بنده یک api دارم که هم می توانم در ویندوز فرم و هم دز وب فرم استفاده کرد

در وب فرم عالی کار می کنید ولی در ویندوز فرم ناقص عملیات انجام می دهد

این api به گونهای طراحی شده که بتوان در IBSng کاربر اضافه کرد

141503

زمان اجرا این اررور را بعد از 20 ثانیه نشان می دهد

مهران موسوی
شنبه 26 تیر 1395, 18:40 عصر
درود

وب سرویس شما restful هست یا soap ؟ نمونه کد ارئه کنید تا به صورت مستند تر بشه مشکل رو بررسی و راه حل ارائه نمود...

اگر soap هست binding رو به اشتراک بزارید. اگر restful هست آدرس و جزئیات و چیزی که بشه دقیقتر بررسی کرد ارائه کنید با یک عکس نمیتواند راهنمایی کرد متاسفانه دوست عزیز

شاد باشید

ms-ninja
شنبه 26 تیر 1395, 21:22 عصر
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&count=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_username=&attr_update_method_0=normalAttrs&has_normal_username=t&current_normal_username=&normal_username=" + UserName + "&password_character=t&password_digit=t&password_len=" + UserPassword.Length.ToString() + "&password=" + UserPassword + "&normal_save_user_add=&tattr_update_method_1=voipAttrs&current_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; }
}

مهران موسوی
یک شنبه 27 تیر 1395, 19:44 عصر
ابتدا بسته زیر را از نوگت در پروژه اضافه کنید


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>(listFormatter);
}
}


موفق باشید

ms-ninja
شنبه 02 مرداد 1395, 14:22 عصر
نشد . امکانش است که از طزیق تلگرام راهنمایی کنید

defender
چهارشنبه 06 مرداد 1395, 10:09 صبح
با عرض سلام.
ممنون میشم که اضافه کردن کاربر در IBSNG رو با زبان c# همینجا توضیح بدید.
من هم همین مشکلات رو دارم.