Удаленный сервер возвратил ошибку 400 недопустимый запрос

I am getting The remote server returned an error: (400) Bad Request error while running the following code.
I am trying to upload xml file on the http server.
My xml file contains tag for the username,password and domain and when i am trying to connect is manually i am able to connect it,but using same credentials when i am trying to connect it through this code, i am getting 400 Bad Request error.
Please suggest me how to overcome this issue.
Thanks
`

  public static void UploadHttp(string xml)     
    {

        string txtResults = string.Empty;
        try
        {
            string url = "http://my.server.com/upload.aspx ";
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.KeepAlive = false;
            request.SendChunked = true;
            request.AllowAutoRedirect = true;
            request.Method = "Post";
            request.ContentType = "text/xml";
            var encoder = new UTF8Encoding();
            var data = encoder.GetBytes(xml);
            request.ContentLength = data.Length;
            var reqStream = request.GetRequestStream();
            reqStream.Write(data, 0, data.Length);
            reqStream.Close();
            WebResponse response = null;
            response = request.GetResponse();
            var reader = new StreamReader(response.GetResponseStream());
            var str = reader.ReadToEnd();
        }
        catch (WebException ex)
        {
            if (ex.Status == WebExceptionStatus.ProtocolError)
            {
                HttpWebResponse err = ex.Response as HttpWebResponse;
                if (err != null)
                {
                    string htmlResponse = new StreamReader(err.GetResponseStream()).ReadToEnd();
                    txtResults = string.Format("{0} {1}", err.StatusDescription, htmlResponse);
                }
            }
            else
            {

            }
        }
        catch (Exception ex)
        {
            txtResults = ex.ToString();
        }
    }`

asked Jan 10, 2013 at 16:04

user1301587's user avatar

2

Are you sure you should be using POST not PUT?

POST is usually used with application/x-www-urlencoded formats. If you are using a REST API, you should maybe be using PUT? If you are uploading a file you probably need to use multipart/form-data. Not always, but usually, that is the right thing to do..

Also you don’t seem to be using the credentials to log in — you need to use the Credentials property of the HttpWebRequest object to send the username and password.

answered Jan 10, 2013 at 16:46

Ben's user avatar

BenBen

34.8k6 gold badges74 silver badges113 bronze badges

1

400 Bad request Error will be thrown due to incorrect authentication entries.

  1. Check if your API URL is correct or wrong. Don’t append or prepend spaces.
  2. Verify that your username and password are valid. Please check any spelling mistake(s) while entering.

Note: Mostly due to Incorrect authentication entries due to spell changes will occur 400 Bad request.

Nae's user avatar

Nae

13.9k7 gold badges52 silver badges78 bronze badges

answered Oct 14, 2015 at 9:33

tamil's user avatar

tamiltamil

311 bronze badge

1

What type of authentication do you use?
Send the credentials using the properties Ben said before and setup a cookie handler.
You already allow redirection, check your webserver if any redirection occurs (NTLM auth does for sure). If there is a redirection you need to store the session which is mostly stored in a session cookie.

answered Jan 10, 2013 at 16:57

YvesR's user avatar

YvesRYvesR

5,8626 gold badges43 silver badges70 bronze badges

//use «ASCII» or try with another encoding scheme instead of «UTF8».

using (StreamWriter postStream = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.UTF8))
{
    postStream.Write(postData);
    postStream.Close();
}

answered Jan 20, 2022 at 11:59

Paras's user avatar

1

I am getting this exception when trying to access a wcf web service.

[WebException: The remote server returned an error: (400) Bad Request.]
  System.Net.HttpWebRequest.GetResponse() +5314029
  System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +54

Server Binding Information

<system.serviceModel>
   <bindings>
      <basicHttpBinding>
         <binding name="wcfSmartConnect" closeTimeout="10:01:00" 
                  maxBufferSize="104857600" maxBufferPoolSize="104857600" 
                  maxReceivedMessageSize="104857600" openTimeout="10:01:00"
                  receiveTimeout="10:10:00" sendTimeout="10:01:00"
                  messageEncoding="Mtom" transferMode="StreamedRequest">
            <readerQuotas maxDepth="104857600" maxStringContentLength="104857600"
                          maxArrayLength="104857600" maxBytesPerRead="104857600" 
                          maxNameTableCharCount="104857600" />
         </binding>
      </basicHttpBinding>
   </bindings>
   <services>
      <service name="WcfSmartConnect.Service1"
               behaviorConfiguration="WcfSmartConnect.Service1Behavior">
         <endpoint 
               address="" 
               binding="basicHttpBinding" 
               bindingConfiguration="wcfSmartConnect"
               contract="WcfSmartConnect.IService1">
            <identity>
               <dns value="localhost" />
            </identity>
         </endpoint>
         <endpoint 
               address="mex" 
               binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
  </services>
  <behaviors>
      <serviceBehaviors>
           <behavior name="WcfSmartConnect.Service1Behavior">
            <serviceMetadata httpGetEnabled="true"/>
                <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
   </behaviors>
</system.serviceModel>

Client Binding Information

<system.serviceModel>
   <bindings>
      <basicHttpBinding>
         <binding name="wcfSmartConnect" closeTimeout="10:01:00" 
                  maxBufferSize="104857600" maxBufferPoolSize="104857600" 
                  maxReceivedMessageSize="104857600" openTimeout="10:01:00" 
                  receiveTimeout="10:10:00" sendTimeout="10:01:00" 
                  messageEncoding="Mtom" transferMode="StreamedRequest">
             <readerQuotas maxDepth="104857600" maxStringContentLength="104857600"
                           maxArrayLength="104857600" maxBytesPerRead="104857600" 
                           maxNameTableCharCount="104857600" />
         </binding>
      </basicHttpBinding>
      <wsHttpBinding>
          <binding name="WSHttpBinding_IService11" closeTimeout="01:00:00"
                   openTimeout="01:00:00" receiveTimeout="01:00:00" 
                   sendTimeout="01:00:00" bypassProxyOnLocal="false" 
                   transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                   maxBufferPoolSize="1048576000" maxReceivedMessageSize="1048576000"
                   messageEncoding="Text" textEncoding="utf-8" 
                   useDefaultWebProxy="true" allowCookies="false">
               <readerQuotas maxDepth="104857600" maxStringContentLength="104857600" 
                             maxArrayLength="104857600" maxBytesPerRead="1048576000" 
                             maxNameTableCharCount="104857600" />
               <reliableSession ordered="true" inactivityTimeout="00:10:00"
                                enabled="false" />
               <security mode="TransportWithMessageCredential">
                   <transport clientCredentialType="Windows" 
                              proxyCredentialType="None" realm="" />
                   <message clientCredentialType="Windows" 
                            negotiateServiceCredential="true" algorithmSuite="Default" 
                            establishSecurityContext="true" />
               </security>
            </binding>
        </wsHttpBinding>
   </bindings>
   <client>
       <endpoint name="WSHttpBinding_IService11"
           address="http://abc.com/API/serv.svc"
           binding="wsHttpBinding" 
           bindingConfiguration="WSHttpBinding_IService11"
           contract="SmartConnectRepublic.IService1" >
           <identity>
               <dns value="localhost" />
           </identity>
       </endpoint>
       <endpoint name="BasicHttpBinding_IService1" 
           address="http://localhost:4649/Service1.svc" 
           binding="basicHttpBinding"
           bindingConfiguration="wcfSmartConnect" 
           contract="SmartConnect.IService1" />
   </client>
</system.serviceModel>

marc_s's user avatar

marc_s

728k174 gold badges1327 silver badges1455 bronze badges

asked Mar 16, 2010 at 16:43

Pinu's user avatar

1

Can you tell us a bit about your setup?

  • what binding do you use?
  • is this the only service method? If not: do the others work?
  • show us the configs on client and server! (everything inside <system.serviceModel> is of interest)

It would appear as if the client times out waiting for the server — this can be because the server takes too long to respond (if you do a lot of data loading); in that case, you need to increase your timeouts on the server and the client

Or you might be sending too large a data packet over the wire — in that case, you might also need to increase the settings for maxReceivedMessageSize et al.

@Pinu: are you trying to upload 5 MB? You have transferMode=StreamRequest, which means your request from the client to the server will be streamed.

If you’re transferring 5 MB, it’s a good idea to stream — which way do you transfer those bytes??

answered Mar 16, 2010 at 17:08

marc_s's user avatar

marc_smarc_s

728k174 gold badges1327 silver badges1455 bronze badges

2

Shiryaev

0 / 0 / 0

Регистрация: 25.11.2014

Сообщений: 11

1

02.09.2020, 17:11. Показов 5743. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день, друзья. Пытаюсь написать небольшое приложение, чтобы сохранить некоторые фотографии с сайта https://pastvu.com/. Уже в начале потерпел неудачу в виде ошибки от сервера: 400 — Недопустимый запрос. Планируется небольшое автоматическое редактирование фотографий, поэтому и использую Win.Forms.

C#
1
2
3
4
5
6
7
string Https = "https://www.pastvu.com/ps/1?f=r!1331";
string Page = "";
WebClient Client = new WebClient();
 
Page = Client.DownloadString(Https);
 
Console.WriteLine(Page);

Я так думаю, ошибка имеет фундаментальный характер, так-как всего пять строчек кода написано. Но я упорно не могу найти решение в гугле. Может быть конкретно в этом случае C# и WebClient неподходящие технологии или что-то ещё использовать нужно? Пожалуйста, кто знает, подскажите в каком направлении искать решение



0



798 / 581 / 207

Регистрация: 21.02.2019

Сообщений: 2,095

02.09.2020, 17:41

2

.. если недопустимый запрос, то, возможно, сервер ждет определенных заголовков в запросе (таких, как в запросе из браузера) … вот тут посмотрите, как добавить заголовки к запросу:
WebClient.Headers Property



1



0 / 0 / 0

Регистрация: 25.11.2014

Сообщений: 11

02.09.2020, 18:36

 [ТС]

3

carrotik, Статью посмотрел, попробовал разные заголовки подобавлять — толку нет. Попробовал «надурочка» атрибут http-equiv HTML тега<meta> в коде страницы посмотреть и добавить из него содержимое — тоже не вышло. Есть ли способ узнать какие заголовки сервер хочет?



0



3090 / 2232 / 641

Регистрация: 02.08.2011

Сообщений: 6,124

02.09.2020, 18:55

4

Цитата
Сообщение от Shiryaev
Посмотреть сообщение

толку нет

И User-Agent тоже не помогает?



1



3090 / 2232 / 641

Регистрация: 02.08.2011

Сообщений: 6,124

02.09.2020, 18:57

5

Вот что Chrome отправляет:

Миниатюры

WebClient Удаленный сервер возвратил ошибку: (400) Недопустимый запрос
 



1



3090 / 2232 / 641

Регистрация: 02.08.2011

Сообщений: 6,124

02.09.2020, 18:58

6

Можете поиграться.



1



Shiryaev

0 / 0 / 0

Регистрация: 25.11.2014

Сообщений: 11

02.09.2020, 20:22

 [ТС]

7

IamRain, carrotik, Собственно заголовок User-Agent помог. По сути добавил строку

C#
1
Client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36");

Прямо со скриншота переписал данные. Текст страницы получил, покопался в нём и взгрустнул. Судя по всему, основной контент страницы генерируется javascript`ом и очевидным для меня методом фотографии не скачать, ибо ссылок нет. Может быть можно как-то яваскрипт выполнить, но это явно не в этой теме обсуждать надо. Буду думать, может и ручками всё сохраню.
Спасибо, всем за помощь. Теперь я знаю больше



0



484 / 439 / 123

Регистрация: 05.01.2010

Сообщений: 1,848

02.09.2020, 20:51

8

Shiryaev, на странице с конкретной фотографией в meta есть строки вида
<link rel="image_src" href="https://pastvu.com/_p/a/1/z/q/1zqpjvce6k548d5f9v.jpg">
<meta property="og:image" content="https://pastvu.com/_p/a/1/z/q/1zqpjvce6k548d5f9v.jpg">

по ним можно уже непосредственно скачать картинку



1



0 / 0 / 0

Регистрация: 25.11.2014

Сообщений: 11

02.09.2020, 22:08

 [ТС]

9

valera_21, Да, это так. Но я хотел сохранить все фотографии конкретных городов, а для этого нужно именно с той злополучной страницы работу начинать. Можно было бы по другому пойти, допустим тупо по всем ссылкам пройтись (например, начать условно с https://pastvu.com/p/0, а закончить https://pastvu.com/p/9999999) и в описании фотографий искать нужный город, но описание так же с помощью скрипта генерируется, как я понял. Улица и название фотографии в тегах есть, а города не вижу

Добавлено через 8 минут
valera_21, А нет, нашел название города в тегах. Завтра попробую тупо весь сайт прошерстить!



0



Перейти к контенту

  • Remove From My Forums
  • Question

  • Hello all..

    I have builded a soap request.. but it’s still not working, can some one help me out..?

    Error:

    System.Net.WebException: The remote server returned an error: (400) Bad Request. 
     
       at System.Net.HttpWebRequest.GetResponse() 
       at CallReportsConsole.MainClass.Main(String[] args) in C:**ConsoleProgram.cs:line 57 
    The remote server returned an error: (400) Bad Request. 

    Code:

    using System; 
    using System.Net; 
    using System.IO; 
    using System.Text; 
    using System.Xml; 
     
    namespace CallReportsConsole 
     
        class MainClass 
        { 
             
     
            public static void Main(string[] args) 
            { 
                 
     
                try 
                { 
                    int username = 123456
                    string password = «wachtwoord»
     
                    //Create SOAP XML 
     
                    StringBuilder sbSoap = new StringBuilder(); 
     
                    //1. Build SOAP string 
                    sbSoap.Append(«<? xml version=»1.0″ encoding=»utf-8″ ?>«); 
                    sbSoap.Append(«<soap:Envelope xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns:xsd=»http://www.w3.org/2001/XMLSchema» xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>n»); 
                    sbSoap.Append(«<soap:Body>n»); 
                    sbSoap.Append(» <GetProductSpecifications xmlns=»http://www.bascomputers.nl/»>n»); 
                    sbSoap.Append(«<customerID>» + username + «</customerID>n»); 
                    sbSoap.Append(«<password>» + password + «</password>n»); 
                    sbSoap.Append(«</GetProductSpecifications>n»); 
                    sbSoap.Append(«</soap:Body></soap:Envelope>«); 
     
                    string soapAction = «http://www.bascomputers.nl/GetProductSpecifications»
     
                    //2. Send XML to CDR server 
                    string cdrURL = «http://xtract.bascomputers.nl:4040/xtract.asmx»
                    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(cdrURL); 
     
                    req.ContentType = «text/xml; charset=utf-8»
                    req.Accept = «text/xml»
                    req.Method = «POST»
                    req.ContentLength = sbSoap.Length; 
                    req.Headers.Add(«SOAPAction», soapAction); 
                    req.KeepAlive = false
     
                    Stream strm = req.GetRequestStream(); 
                    byte[] bytes = 
                    System.Text.Encoding.ASCII.GetBytes(sbSoap.ToString()); 
                    strm.Write(bytes, 0, bytes.Length); 
                    strm.Close(); 
     
                    //3. Get response & send back filename 
                    HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 
     
                    StreamReader r = new 
                    StreamReader(resp.GetResponseStream()); 
     
                    XmlTextReader xmlRead = new XmlTextReader(r); 
     
                    while (xmlRead.Read()) 
                    { 
                        Console.Write(xmlRead.Value.ToString()); 
                    } 
     
                    r.Close(); 
                    strm.Close(); 
     
                } 
     
                catch (WebException wex) 
                { 
                Console.Write(wex.ToString()); 
                Console.Write(wex.Message.ToString()); 
                } 
     
                catch (Exception ex) 
                { 
                Console.Write(ex.ToString()); 
                Console.Write(ex.Message.ToString()); 
                } 
                 
                Console.Read(); 
                 
            } 
        } 

Answers

  •  

    Use the following code.  

    try  

                {  
                    string soapRequest=  
                        «<soap:Envelope xmlns:xsi=’http://www.w3.org/2001/XMLSchema-instance’ xmlns:xsd=’http://www.w3.org/2001/XMLSchema’ xmlns:soap=’http://schemas.xmlsoap.org/soap/envelope/’>» + «n»  +  
                        «<soap:Body>  » + «n» +  
                        «<m:GetProductSpecifications xmlns:m=‘http://www.bascomputers.nl/’>»  + «n» +  
                        «<m:customerID>123456</m:customerID>«+ «n» +  
                        «<m:password>wachtwoord</m:password>» + «n» +  
                        «</m:GetProductSpecifications>»   + «n» +  
                        «</soap:Body>»   + «n» +  
                        «</soap:Envelope>» + «n» ;  
     
                        
                    string soapAction = «http://www.bascomputers.nl/GetProductSpecifications»;  
     
                    //2. Send XML to CDR server     
                    string cdrURL = «http://xtract.bascomputers.nl:4040/xtract.asmx»;  
                    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(cdrURL);  
     
                    req.ContentType = «text/xml; charset=utf-8»;  
                    req.Accept = «text/xml»;  
                    req.Method = «POST»;  
                    //req.ContentLength = sbSoap.Length;  
                    req.Headers.Add(«SOAPAction», soapAction);  
                    req.KeepAlive = false;  
                   XmlDocument doc = new XmlDocument();    
                    doc.LoadXml(soapRequest);    
                    using (Stream strm = req.GetRequestStream())  
                    {  
                        doc.Save(strm);  
                    }  
                    //XmlDocument doc = new XmlDocument();    
                    //  doc.LoadXML(soapRequest);    
                        
     
                    //3. Get response & send back filename     
                    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();  
     
                    //StreamReader r = new 
                    //StreamReader(resp.GetResponseStream());  
                    using (Stream respStm = resp.GetResponseStream())  
                    {  
                        using (StreamReader r = new StreamReader(respStm))  
                        {  
                              
                                string str = r.ReadToEnd();  
                             
                        }  
                    }  
                    
                } 

    Be Happy

    • Marked as answer by

      Tuesday, February 10, 2009 12:51 PM

Exchange Server 2019 Exchange Server 2016 Exchange Server 2013 Еще…Меньше

Проблемы

При попытке запросить сведения о занятости пользователя в другом лесу доверенного перекрестного топологии запрос не справился с запросом и создает следующее сообщение об ошибке:

  • MessageText: «При обнаружении не удалось найти адрес электронной почты user@domain.com с ошибкой Майкрософт. Exchange.InfoWorker.Common.Availability.AutoDiscoverFailedException: удаленный сервер возвращает ошибку (400) Bad Request.. Сведения о запросе: URL-адрес обнаружения : https:// targetdomain.com/Autodiscover/Autodiscover.xml, EmailAddress : <user>SMTP:user@ targetdomain.com. —> System.Net.WebException: удаленный сервер возвращает ошибку (400) Bad Request.

       на сайте System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

  •    в корпорации Майкрософт. Exchange.InfoWorker.Common.Availability.AutoDiscoverRequest.EndInvoke(IAsyncResult asyncResult)

    — конце внутренней трассировки стека исключений —

Причина

Это известная проблема в обновлении системы безопасности за апрель 2021 г. и май 2021 г. для Microsoft Exchange Server 2019, 2016 и 2013 гг.

Обходное решение

Чтобы обойти эту проблему, воспользуйтесь одним из следующих способов:

Способ 1

Не используйте учетную запись службы при настройке адресного пространства доступности. Чтобы настроить адресное пространство, выполните указанные здесь действия.

  1. Создайте учетную запись <targetdomain><fbaccount>» в целевом лесу.

    Примечание. Это может быть обычная учетная запись пользователя. Почтовый ящик не требуется.

  2. Предоставление разрешений для новой учетной записи в целевом лесу:

    • set-AvailabilityConfig -PerUserAccount <targetdomain><fbaccount>

  3. В лесу источника удалите существующее адресное пространство доступности:

    • remove-AvailabilityAddressSpace <ID of the AvailabilityAddressSpace of Target domain>

  4. Добавьте новое адресное пространство доступности. В этот раз-UseServiceAccount$falseи использовать параметр -Credentials :

    • Add-AvailabilityAddressSpace -ForestName <Target Forest Name> -AccessMethod PerUserFB -UseServiceAccount $false -Credentials (Get-Credential)

  5. Когда вам будет предложено ввести учетные данные, введите учетные данные для targetdomainfbaccount.

  6. Перезапустите службы IIS IIS, выпустив следующий cmdlet PowerShell:

  • Restart-Service W3SVC, WAS

Способ 2

  1. Настройте федераированный общий доступ между Exchange организации.

  2. Перезапустите службы IIS IIS, выпустив следующий cmdlet PowerShell:

  • Restart-Service W3SVC, WAS

Ссылки

Настройка федератного общего доступа Exchange организации | Документы Майкрософт

Описание обновления для системы безопасности Microsoft Exchange Server 2019, 2016 и 2013 г.: 13 апреля 2021 г. (KB5001779)

Нужна дополнительная помощь?

Shiryaev

0 / 0 / 0

Регистрация: 25.11.2014

Сообщений: 11

1

02.09.2020, 17:11. Показов 4993. Ответов 8

Метки нет (Все метки)


Добрый день, друзья. Пытаюсь написать небольшое приложение, чтобы сохранить некоторые фотографии с сайта https://pastvu.com/. Уже в начале потерпел неудачу в виде ошибки от сервера: 400 — Недопустимый запрос. Планируется небольшое автоматическое редактирование фотографий, поэтому и использую Win.Forms.

C#
1
2
3
4
5
6
7
string Https = "https://www.pastvu.com/ps/1?f=r!1331";
string Page = "";
WebClient Client = new WebClient();
 
Page = Client.DownloadString(Https);
 
Console.WriteLine(Page);

Я так думаю, ошибка имеет фундаментальный характер, так-как всего пять строчек кода написано. Но я упорно не могу найти решение в гугле. Может быть конкретно в этом случае C# и WebClient неподходящие технологии или что-то ещё использовать нужно? Пожалуйста, кто знает, подскажите в каком направлении искать решение

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

796 / 579 / 207

Регистрация: 21.02.2019

Сообщений: 2,095

02.09.2020, 17:41

2

.. если недопустимый запрос, то, возможно, сервер ждет определенных заголовков в запросе (таких, как в запросе из браузера) … вот тут посмотрите, как добавить заголовки к запросу:
WebClient.Headers Property

1

0 / 0 / 0

Регистрация: 25.11.2014

Сообщений: 11

02.09.2020, 18:36

 [ТС]

3

carrotik, Статью посмотрел, попробовал разные заголовки подобавлять — толку нет. Попробовал «надурочка» атрибут http-equiv HTML тега<meta> в коде страницы посмотреть и добавить из него содержимое — тоже не вышло. Есть ли способ узнать какие заголовки сервер хочет?

0

2931 / 2101 / 611

Регистрация: 02.08.2011

Сообщений: 5,799

02.09.2020, 18:55

4

Цитата
Сообщение от Shiryaev
Посмотреть сообщение

толку нет

И User-Agent тоже не помогает?

1

2931 / 2101 / 611

Регистрация: 02.08.2011

Сообщений: 5,799

02.09.2020, 18:57

5

Вот что Chrome отправляет:

Миниатюры

WebClient Удаленный сервер возвратил ошибку: (400) Недопустимый запрос
 

1

2931 / 2101 / 611

Регистрация: 02.08.2011

Сообщений: 5,799

02.09.2020, 18:58

6

Можете поиграться.

1

Shiryaev

0 / 0 / 0

Регистрация: 25.11.2014

Сообщений: 11

02.09.2020, 20:22

 [ТС]

7

IamRain, carrotik, Собственно заголовок User-Agent помог. По сути добавил строку

C#
1
Client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36");

Прямо со скриншота переписал данные. Текст страницы получил, покопался в нём и взгрустнул. Судя по всему, основной контент страницы генерируется javascript`ом и очевидным для меня методом фотографии не скачать, ибо ссылок нет. Может быть можно как-то яваскрипт выполнить, но это явно не в этой теме обсуждать надо. Буду думать, может и ручками всё сохраню.
Спасибо, всем за помощь. Теперь я знаю больше

0

484 / 439 / 123

Регистрация: 05.01.2010

Сообщений: 1,848

02.09.2020, 20:51

8

Shiryaev, на странице с конкретной фотографией в meta есть строки вида
<link rel="image_src" href="https://pastvu.com/_p/a/1/z/q/1zqpjvce6k548d5f9v.jpg">
<meta property="og:image" content="https://pastvu.com/_p/a/1/z/q/1zqpjvce6k548d5f9v.jpg">

по ним можно уже непосредственно скачать картинку

1

0 / 0 / 0

Регистрация: 25.11.2014

Сообщений: 11

02.09.2020, 22:08

 [ТС]

9

valera_21, Да, это так. Но я хотел сохранить все фотографии конкретных городов, а для этого нужно именно с той злополучной страницы работу начинать. Можно было бы по другому пойти, допустим тупо по всем ссылкам пройтись (например, начать условно с https://pastvu.com/p/0, а закончить https://pastvu.com/p/9999999) и в описании фотографий искать нужный город, но описание так же с помощью скрипта генерируется, как я понял. Улица и название фотографии в тегах есть, а города не вижу

Добавлено через 8 минут
valera_21, А нет, нашел название города в тегах. Завтра попробую тупо весь сайт прошерстить!

0

Я пытаюсь отправить SMS из своего веб-приложения. Я использую сторонний веб-сервис для отправки сообщений. В среде разработки я могу отправлять SMS, когда то же самое приложение, размещенное в рабочей среде, получает следующую ошибку:

System.Net.WebException: The remote server returned an error: (400) Bad Request.
   at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
   at System.Net.HttpWebRequest.GetRequestStream()
   at System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()
   --- End of inner exception stack trace 
Server stack trace: 
   at System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()
   at System.ServiceModel.Channels.HttpOutput.Send(TimeSpan timeout)
   at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.SendRequest(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Ниже приведены изменения, которые я сделал в файле web.config:

     <system.net>
        <defaultProxy useDefaultCredentials="true" />
      </system.net>
<basicHttpBinding>
    <binding name="IBulkSMS" closeTimeout="00:10:00" openTimeout="00:10:00"
     receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false"
     bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
     maxBufferSize="500000" maxBufferPoolSize="524288" maxReceivedMessageSize="500000"
     messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
     useDefaultWebProxy="true">
     <readerQuotas maxDepth="32" maxStringContentLength="10500" maxArrayLength="16384"
      maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        <security mode="Transport">
      <transport clientCredentialType="None" proxyCredentialType="None"
       realm="" />
      <message clientCredentialType="UserName" algorithmSuite="Default" />
     </security>
    </binding>
</basicHttpBinding>
<endpoint address="SMS.asmx"
    binding="basicHttpBinding" bindingConfiguration="IBulkSMS"
    contract="IBulkSMS.IBulkSMS" name="IBulkSMS" >
     <identity>
     <servicePrincipalName value="host/MachineName" />
    </identity>
    </endpoint>
  • Remove From My Forums
  • Question

  • Hi,

    I have a created a wcf webservice that has a method that takes a base64string and a string as parameters. When I call the method I get the following error:

    System.Net.WebException: The remote server returned an error: (400) Bad Request.

    I have done some research and found that the reason for the error might be that the base64string is to large (155412). I don’t have any max values set in the Web config file at the moment. Can someone help me with what parameters I need to set and to what?

    Also, do I need to set the same parameters to the same values in the web.config for the client as well?

    Kind Regards

    Cecilia

Answers

  • Have you tried setting the MaxRecievedMessageSize quota on your binding to a high enough number?   Also, as a debugging technique, you may want to turn on tracing to see what’s happening inside the service.   The following config for your service will enable diagnostic tracing:

    <configuration>

       <system.diagnostics>

          <sources>

             <source name=«System.ServiceModel« switchValue=«Warning«>

                <listeners>

                   <add name=«_listener0« />

                </listeners>

             </source>

         </sources>

          <sharedListeners>

             <add name=«_listener0« type=«System.Diagnostics.XmlWriterTraceListener«

                    initializeData=«MyTraceFile.e2e« traceOutputOptions=«Callstack« />

         </sharedListeners>

         <trace autoflush=«true« />

       </system.diagnostics>

    ….

    svcTraceViewer will enable you to view the traces.

  • Remove From My Forums
  • Question

  • Hi,

    I have a created a wcf webservice that has a method that takes a base64string and a string as parameters. When I call the method I get the following error:

    System.Net.WebException: The remote server returned an error: (400) Bad Request.

    I have done some research and found that the reason for the error might be that the base64string is to large (155412). I don’t have any max values set in the Web config file at the moment. Can someone help me with what parameters I need to set and to what?

    Also, do I need to set the same parameters to the same values in the web.config for the client as well?

    Kind Regards

    Cecilia

Answers

  • Have you tried setting the MaxRecievedMessageSize quota on your binding to a high enough number?   Also, as a debugging technique, you may want to turn on tracing to see what’s happening inside the service.   The following config for your service will enable diagnostic tracing:

    <configuration>

       <system.diagnostics>

          <sources>

             <source name=«System.ServiceModel« switchValue=«Warning«>

                <listeners>

                   <add name=«_listener0« />

                </listeners>

             </source>

         </sources>

          <sharedListeners>

             <add name=«_listener0« type=«System.Diagnostics.XmlWriterTraceListener«

                    initializeData=«MyTraceFile.e2e« traceOutputOptions=«Callstack« />

         </sharedListeners>

         <trace autoflush=«true« />

       </system.diagnostics>

    ….

    svcTraceViewer will enable you to view the traces.

Текст сообщения из статуса портала Причина проблемы Рекомендации по решению1)
1 Практически сразу после запуска портала возникает одна из следующих ошибок:
1. «Ошибка. Ссылка на объект не указывает на экземпляр объекта.»
2. «Ошибка. Object reference not set to an instance of an object.»
На сервере портала не запущена служба BS_PingHost. Запустить/перезапустить службу BS_PingHost на сервере портала.
2 «Ошибка подключения к БД: 2002» Служба BS_WebService_MySql на сервере портала отключена, или повреждён файл bsportal.ini, находящийся в папке с порталом. 1. Запустить/перезапустить службу BS_WebService_MySql на сервере портала.
2. В начале файла bsportal.ini добавить пустую строку.
3. Для каждой пары Ключ=Значение из файла bsportal.ini добавить кавычки вокруг значения, если их нет (такие строки должны иметь вид Ключ=»Значение»).
3 «Ошибка при формировании структуры портала: Ошибка лицензии» Не отмечены пользователи для выгрузки в портал, либо отмеченные для выгрузки пользователи недоступны на стороне сервера. Убедиться, что отмечены для выгрузки в портал пользователи (см. Назначение пользователей портала) и что они доступны на стороне сервера (либо локальные пользователи сервера портала, либо доменные, доступные с сервера портала2)).
4 1. «Ошибка. На сервере не запущен Apache или MySQL»
2. «Не удалось запустить службу BS_WebService на компьютере»
Это показатель того, что где-то в конфигурационных файлах Apache ошибка. Для решения этой проблемы требуется проверить файл конфигурации такой командой:
C:Program Files (x86)STU-SoftBusiness Studio 4.2BS_WebServiceApache2.4binhttpd.exe -t -f confhttpd-service.conf.

В ответе должно быть написано, какие имеются ошибки в настройках Apache – исправьте эти ошибки.

5 «hexadecimal value 0x1F, is an invalid character» С высокой вероятностью какой-то из объектов, выгружаемых на портал, имеет недопустимый символ в своём названии. На текущий момент требуется вручную найти такой объект и для него с нуля перепечатать от руки название.
6 «System.Net.Sockets.SocketException (0x80004005): Only one usage of each socket address (protocol/network address/port) is normally permitted» Apache или MySql не смогли занять прописанные для них порты.
Список портов, требуемых для работы Apache и MySql приведен в статье базы знаний Порты, используемые при работе Business Studio
Найдите приложения, занявшие требуемые для работы Apache и MySQL порты. Рекомендации по поиску подобных приложений приведены в статье базы знаний Поиск приложений, которыми заняты порты.
Примите меры к тому, чтобы эти порты не занимались найденными сторонними приложениями.
7 1. «Не удалось получить группу/группы»
2. «The attempt to retrieve authorization groups failed»
3. «Ошибка (1301) при перечислении групп»
Рекомендации по решению приведены в статье базы знаний Портал не формируется, в статусе ошибка получения или перечисления групп
8 В сообщении об ошибке встречается фрагмент «не имеет прав на запуск помощников на tcp://» Пользователь, под которым выполняется формирование портала, не является администратором компьютера, имя/IP-адрес которого присутствуют в сообщении, в связи с чем не может выполнить требуемую операцию. Требуется сделать такого пользователя администратором компьютера (в случае же, если эта проблема возникает со вспомогательным сервером при распределенном формировании, то также решением будет пользователя, от которого запускается BSPS на основном сервере, включить на вспомогательном сервере в состав локальной группы «BS_PortalGroup»).
9 В сообщении об ошибке встречается код «500» Одна из возможных причин заключается в том, что сформированный отчёт имеет большой размер, и скрипты HTML-публикации/Business Studio Portal не могут его обработать из-за ограничений. Рекомендации по решению приведены в статье базы знаний Отчёты физически сформированы для HTML-публикации/Business Studio Portal, но не выводятся на показ
Необходимо сообщить о проблеме на адрес техподдержки support@businessstudio.ru с описанием того, какие файлы менялись в портале пользователями, и прикреплённым файлом ошибок Apache (по умолчанию такой файл можно найти на сервере портала в папке C:ProgramDataSTU-SoftBS_WebServicelogs).
10 В сообщении об ошибке встречается фрагмент «Ошибка при формировании структуры портала: error=[1062] Duplicate entry» Рекомендации по решению приведены в статье базы знаний При формировании HTML-публикации/портала возникает ошибка «Duplicate entry…»
11 «The specified directory service attribute or value does not exist» при запуске портала или при получении информации о лицензиях портала Рекомендации по решению приведены в статье базы знаний Ошибка «The specified directory service attribute or value does not exist» при запуске портала или при получении информации о лицензиях портала
12 «Портал не содержит служебных процессов с ролью «Ввод Показателей», выполняющихся на локальном компьютере» Рекомендации по решению проблемы см. в статье базы знаний Портал не формируется, при этом в логах служебных процессов или статусе портала появляется ошибка: «Портал не содержит служебных процессов с ролью «Ввод Показателей», выполняющихся на локальном компьютере».
13 В статусе портала ошибка вида:
«System.Net.WebException: Удаленный сервер возвратил ошибку: (400) Недопустимый запрос».
При этом при открытии портала в браузере появляется ошибка:
«Bad Request. Your browser sent a request that this server could not understand. Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request».
Имя сервера портала содержит некорректный символ, который конфликтует с hostname. Изменить имя сервера на корректное.
К символам, которые корректно работают с hostname носятся:
Буквы кодировки ASCII от «a» до «z» (без учета регистра), цифры от «0» до «9» и символ минус «-«.
Остальные символы, в том числе «пробел» могут вызывать конфликт и работать некорректно.
14 В статусе портала ошибка вида:
«System.Net.WebException: Удаленный сервер возвратил ошибку: (400) Недопустимый запрос».
При этом в журнале сообщений Windows появляется ошибка вида:
«Сделана попытка доступа к сокету методом, запрещенным правами доступа. : AH00072: make_sock: could not bind to address [::]:5558»
Какой-то процесс занял порт, требуемый для работы Apache, и Apache не может запуститься.
Список портов, требуемых для работы Apache и MySql приведен в статье базы знаний Порты, используемые при работе Business Studio
Рекомендации по решению проблемы приведены в статье базы знаний Решение проблем с портами в Apache.
15 1. «Ошибка. Ошибка при формировании структуры портала: Ссылка на объект не указывает на экземпляр объекта.»
2. «Ошибка. Ошибка при формировании структуры портала: Object reference not set to an instance of an object.»
1. В справочнике «Назначения группы вертикальных прав пользователю» (до BS 5.0 включительно – «Права пользователя») есть объекты с пустым значением параметра «Группа вертикальных прав» (до BS 5.0 включительно – «Категория прав»). 1. Найдите проблемные объекты, выполнив фильтр по классу «Назначения группы вертикальных прав пользователю» (до BS 5.0 включительно – «Права пользователя») с таким условием:

2. Удалите найденные строки (если они не нужны) или заполните для них группу вертикальных прав.
3. Переформируйте портал.
2. В выгрузке присутствуют единицы деятельности с пустой строкой на вкладке «Оргединицы». 1. Найдите проблемные объекты, выполнив фильтр по классу «Деятельность» (до BS 5.0 включительно – «Процессы») с таким условием:


2. Для каждой из найденных единиц деятельности откройте окно свойств и удалите пустые строки со вкладки «Оргединицы».
3. Переформируйте портал.
16 «База данных не может быть открыта в редакции Professional. Используйте редакцию Enterprise и выше. Опции базы данных: Ветки.» 1. Ранее с базой работали в редакции Enterprise или выше и при этом были созданы ветки, функционал которых недоступен в редакции Professional (подробнее см. Ветки). Рекомендации по решению проблемы приведены в статье базы знаний Ошибка «База данных не может быть открыта в редакции Professional. Используйте редакцию Enterprise и выше. Опции базы данных: Ветки».
2. ПО «Business Studio» было не установлено, а скопировано с другого компьютера. Установить/переустановить Business Studio в варианте «На сервер-Сервер Business Studio Portal» (для использования Business Studio на этом компьютере только для формирования портала) или «На сервер-Сервер Business Studio» (для любых сценариев использования Business Studio на этом компьютере). Подробнее см. Выбор варианта установки программы.

Таблица 1. Перечень известных ошибок в статусе портала и рекомендаций по их решению

Понравилась статья? Поделить с друзьями:
  • Удаленный сервер возвратил ошибку 522
  • Удаленный рабочий стол произошла ошибка при проверке подлинности
  • Удаленный сервер возвратил ошибку 521
  • Удаленный рабочий стол ошибка 0x104
  • Удаленный сервер возвратил ошибку 503 сервер недоступен vsphere