آگاه‌سازی‌ها
پاک‌کردن همه

مشکل در ساخت فرصت فروش با api

11 ارسال ها
2 کاربران
-3 Likes
137 نمایش‌
0
شروع کننده موضوع
میخوام در next js با api یک فرصت فروش ایجاد کنم اما در جواب این درخواست خطا وجود داره:
 
این کد هست:
import axios from 'axios';
 
export const useSaveOpportunitySoap = () => {
const sendToCrm = async (formData) => {
const today = new Date().toISOString();
const description = Object.entries(formData)
.map(([key, value]) => `${key}: ${value}`)
.join(' | ');
 
console.log(description)
 
const xml = `<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
</s:Header>
<s:Body>
<SaveOpportunity xmlns="http://tempuri.org/">
<username>aaaaaa</username>
<password>bbbbbbbb</password>
<opportunityInfo xmlns:d4p1="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:CrmObjectTypeCode>orgsale100</d4p1:CrmObjectTypeCode>
<d4p1:IdentityId>7c66626a-9a8e-4c73-94fd-95a658dda00f</d4p1:IdentityId>
<d4p1:Subject>امکان سنجی وایرلس هرمزنت</d4p1:Subject>
<d4p1:OpportunityType>فروش وایرلس</d4p1:OpportunityType>
<d4p1:OpportunitySourceType>امکان سنجی آنلاین</d4p1:OpportunitySourceType>
<d4p1:SaleStage>فرصت فروش</d4p1:SaleStage>
<d4p1:Description>name: تست| familyName: تست | fatherName: محمد | nationalId: 1234567890 | Certificate: 1234567890 | Sex: male | birthDate: 1404/03/14 | mobile: 09123456789| landlineNumber: 02132456520 | Email: testpg@gmail.com | postalCode: 1234567890 | address: تهران خیابان ملت | city: بندرعباس | province: tehran | latitude: 35.737986 | longitude: 51.286634</d4p1:Description>
</opportunityInfo>
</SaveOpportunity>
</s:Body>
</s:Envelope>`;
 
try {
const response = await axios.post(
'https://aa.bbbbbbb.com/services/api/iopportunity.svc',
xml,
{
headers: {
'Content-Type': 'text/xml',
'SOAPAction': 'http://tempuri.org/IOpportunity/SaveOpportunity',
},
}
);
 
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(response.data, 'text/xml');
const success = xmlDoc.getElementsByTagName('Success')[0]?.textContent;
const message = xmlDoc.getElementsByTagName('Message')[0]?.textContent;
 
return {
success: success === 'true',
message: message || 'پاسخی دریافت نشد',
};
} catch (error) {
console.error('خطا در SOAP:', error);
return {
success: false,
message: 'خطا در ارسال درخواست به سرور',
};
}
};
 
return { sendToCrm };
};

این هم خطا:

Access to XMLHttpRequest at 'https://pg.hormoznet.net/services/api/iopportunity.svc' from origin 'http://localhost:3030' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

نتیجه درخواست:
AxiosError {message: 'Network Error', name: 'AxiosError', code: 'ERR_NETWORK', config: {…}, request: XMLHttpRequest, …}

m.yadegar 19 تیر 1404 12:21 ق.ظ
این نوشته در 3 هفته قبل توسط m.yadegar اصلاح شد

@hormoznet

با سلام و احترام خطایی در متد save وب سرویس Opportunity وجود ندارد. ارور مربوط به عدم ارتباط  http://localhost:303 0' و 'https://pg.hormoznet.net/services/api/iopportunity.svc' میباشد که سمت خودتان باید بررسی گردد.

برچسب‌های موضوع
6 پاسخ
0
شروع کننده موضوع

ببینید هر سه آدرس زیر همون صفحه ای که عرض کردم رو نشون میده:
http://localhost/services/api/iopportunity.svc
http://127.0.0.1/services/api/iopportunity.svc
http://172...../services/api/iopportunity.svc آی پی سرور

m.yadegar 29 تیر 1404 10:25 ق.ظ
0
شروع کننده موضوع

این https://pg.hormoznet.net/services/api/iopportunity.svc هم مثل بقیه. همه شون مثل هم هستن

m.yadegar 31 تیر 1404 6:46 ب.ظ

@hormoznet
با توجه به اینکه نرم افزار شما با https بالا میاید لطفا چک کنید آدرس URLl ای که قرار میدهید حتما https باشد. http://localhost/services/api/iopportunity.svc
http://127.0.0.1/services/api/iopportunity.svc
http://172...../services/api/iopportunity.svc
این آدرس هایی که فرمودید هیچ کدام https نیستند.

0
شروع کننده موضوع

ببینید:
شما عرض میکنید که در مرورگر آدرس وب سرویس رو بزنید. در مرورگر با متد GET ارسال میشه ولی در مستندات گفته شده با متد POST ارسال بشه.
مورد دوم هم اینکه من با https://pg.hormoznet.net/services/api/iopportunity.svc هم تست کردم که ssl داره ولی خطای 404 میده.
(مستنداتتون اصلا شفاف نیست که یک برنامه نویس از روی اون کارش رو انجام بده)

m.yadegar 1 مرداد 1404 6:44 ب.ظ

@hormoznet
مشکلی در api های opportunity وجود ندارد . باید سمت سرور شما بررسی شود. با تیم cs هماهنگی لازم را انجام میدم تا دسترسی از سرور پیام گستر شما داشته باشم برای بررسی.

-1
شروع کننده موضوع

curl --location 'http://localhost/services/api/iopportunity.svc' \
--header 'Content-Type: text/xml; charset=utf-8' \
--header 'SOAPAction: "http://tempuri.org/SaveOpportunity"' \
--data-raw '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
</s:Header>
<s:Body>
<SaveOpportunity xmlns="http://tempuri.org/">
<username>username</username>
<password>password</password>
<opportunityInfo xmlns:d4p1="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:CrmObjectTypeCode>orgsale100</d4p1:CrmObjectTypeCode>
<d4p1:IdentityId>7c66626a-9a8e-4c73-94fd-95a658dda00f</d4p1:IdentityId>
<d4p1:Subject>امکان سنجی وایرلس هرمزنت</d4p1:Subject>
<d4p1:OpportunityType>فروش وایرلس</d4p1:OpportunityType>
<d4p1:OpportunitySourceType>امکان سنجی آنلاین</d4p1:OpportunitySourceType>
<d4p1:SaleStage>فرصت فروش</d4p1:SaleStage>
<d4p1:Description>name: رضا | familyName: راد | fatherName: هاشم | nationalId: 2500161234 | Certificate: 2500161234 | Sex: male | birthDate: 1404/03/14 | mobile: 09179999315 | landlineNumber: 07632240250 | Email: radmail90@gmail.com | postalCode: 7933655555 | address: بندرعباس، بلوار ساحلی | city: بندرعباس | province: hormozgan | latitude: 27.178149 | longitude: 56.266823</d4p1:Description>
</opportunityInfo>
</SaveOpportunity>
</s:Body>
</s:Envelope>'

برای ساخت فرصت از http://localhost/ و http://127.0.0.1   (سرور خود پیام گستر) هم ارسال کردیم و 
میگه چنین endpoint ای با متد POST وجود نداره (خطای 404)

-1

با سلام و احترام

لطفا http://localhost/services/api/iopportunity.svc را در مرورگر روی سرور پیام گستر وارد نمایید و چک نمایید سرویس کال میشود یا خیر.

(در صورتیکه کال نشد به جای localhost آی پی نرم افزار پیام گستر را وارد و مجدد تست نمایید)

مورد بعد اینکه در headers در postman  به جای "'SOAPAction: "http://tempuri.org/SaveOpportunity" مقدار "http://tempuri.org/IOpportunity/SaveOpportunity" را وارد نمایید.

سمپل  بدون خطای create opportunity در postman خدمتتان ارسال میگردد.

post:

http(s)://[crm address]/Services/API/iopportunity.svc

 

Header:

SOAPAction
http://tempuri.org/IOpportunity/SaveOpportunity
Content-Type
text/xml;charset=utf-8

 

Body (xml):

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
</s:Header>
<s:Body>
<SaveOpportunity xmlns="http://tempuri.org/">
<username>admin</username>
<password>???????</password>
<opportunityInfo xmlns:d4p1="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:CrmObjectTypeCode>forsat_test</d4p1:CrmObjectTypeCode>
<d4p1:IdentityId>????????</d4p1:IdentityId>
<d4p1:Subject>test</d4p1:Subject>
<d4p1:OpportunitySourceType>وب سایت</d4p1:OpportunitySourceType>
<d4p1:OpportunityType>استاندارد</d4p1:OpportunityType>
<d4p1:SaleStage>مذاکره</d4p1:SaleStage>
</opportunityInfo>
</SaveOpportunity>
</s:Body>
</s:Envelope>

این نوشته در 2 هفته قبل 3 بار توسط m.yadegar اصلاح شد
-1
شروع کننده موضوع

در مرورگر آدرس http://localhost/services/api/iopportunity.svc  وارد کردم (صفحه ای اومد که کدها در کادر سبز هستند). محتویات این صفحه:
Opportunity Service

You have created a service.

To test this service, you will need to create a client and use it to call the service. You can do this using the svcutil.exe tool from the command line with the following syntax:

svcutil.exe http://localhost/Services/API/IOpportunity.svc?wsdl
You can also access the service description as a single file:

http://localhost/Services/API/IOpportunity.svc?singleWsdl
This will generate a configuration file and a code file that contains the client class. Add the two files to your client application and use the generated client class to call the Service. For example:

C#

class Test
{
static void Main()
{
OpportunityClient client = new OpportunityClient();

// Use the 'client' variable to call operations on the service.

// Always close the client.
client.Close();
}
}

Visual Basic

Class Test
Shared Sub Main()
Dim client As OpportunityClient = New OpportunityClient()
' Use the 'client' variable to call operations on the service.

' Always close the client.
client.Close()
End Sub
End Class

بعدش با همان هدرهایی که فرمودید و با body زیر (xml) درخواست به http://localhost/services/api/iopportunity.svc ارسال کردم با متد POST که خطای 404 داد.

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
</s:Header>
<s:Body>
<SaveOpportunity xmlns="http://tempuri.org/">
<username>username</username>
<password>password</password>
<opportunityInfo xmlns:d4p1="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:CrmObjectTypeCode>orgsale100</d4p1:CrmObjectTypeCode>
<d4p1:IdentityId>7c66626a-9a8e-4c73-94fd-95a658dda00f</d4p1:IdentityId>
<d4p1:Subject>امکان سنجی وایرلس هرمزنت</d4p1:Subject>
<d4p1:OpportunityType>فروش وایرلس</d4p1:OpportunityType>
<d4p1:OpportunitySourceType>امکان سنجی آنلاین</d4p1:OpportunitySourceType>
<d4p1:SaleStage>فرصت فروش</d4p1:SaleStage>
<d4p1:Description>name: تست| familyName: تست | fatherName: محمد | nationalId: 1234567890 | Certificate: 1234567890 | Sex: male | birthDate: 1404/03/14 | mobile: 09123456789| landlineNumber: 02132456520 | Email: testpg@gmail.com | postalCode: 1234567890 | address: تهران خیابان ملت | city: بندرعباس | province: tehran | latitude: ۳۵.۷۳۷۹۸۶ | longitude: ۵۱.۲۸۶۶۳۴</d4p1:Description>
</opportunityInfo>
</SaveOpportunity>
</s:Body>

</s:Envelope>
m.yadegar 28 تیر 1404 6:43 ب.ظ

@hormoznet
ساختار XML کد شما ظاهرا مشکلی ندارد. چیزی که به نظر می آید ممکن است که UR L ای که به آن درخواست SOAP را POST می‌کنید، اوکی نباشد.
لطفا در آدرس http://localhost/services/api/iopportunity.svc به جای localhost آی پی نرم افزار را وارد و مجدد چک نمایید.

اشتراک:
پیمایش به بالا